Thread-中断
- interrupt()
interrupt()用于中断线程,调用该方法的线程的状态将被置为"中断"状态。
注意:线程中断仅仅是设置线程的中断状态位,不会停止线程。需要用户自己去监视线程的状态为并做处理。这里可以看到中断后该线程还在继续往下执行,并没有强制终止线程。
1.如果线程在wait, sleep,join阻塞时,调用了interrupt()方法,会抛出InterruptedException异常,会清除中断标志位。
2.如果不会中断sleep,wait,join方法或文档描述的其他情况,就不会抛InterruptException异常,就不会清除中断标志位。
为了保证数据的一致性和完整性,我们需要用Thread.interrupt()方法再次中断自己,置上中断标志位。
- interrupted()
测试当前线程是否已经中断。调用interrupted()会清除中断标志位。
- isInterrupted()
测试线程是否已经中断。中断标志位 不受该方法的影响。
join()
主线程执行了subThread.join(),主线程会等待子线程执行完毕后,自己再执行。
网友评论