具体可参考:Java并发编程:Thread类的使用,这里对线程状态的转换做一下补充。
一、线程状态转换图
1、join()
join()实际是利用了wait(),只不过它不用等待notify()/notifyAll()。它结束的条件是:1)阻塞时间到;2)目标线程已经run完(通过isAlive()来判断)。
2、interrupt()
此操作会中断阻塞中的线程,并将线程的中断标志位置位。如果线程在运行态则不会受此影响。
可以通过以下三种方式来判断中断:
1)isInterrupted()
此方法只会读取线程的中断标志位,并不会重置。
2)interrupted()
此方法读取线程的中断标志位,并会重置。
3)throw InterruptException
抛出该异常的同时,会重置中断标志位。
end
时间: 2024-10-09 00:48:58