Thread

Thread-中断

  • interrupt()

interrupt()用于中断线程,调用该方法的线程的状态将被置为"中断"状态。
注意:线程中断仅仅是设置线程的中断状态位,不会停止线程。需要用户自己去监视线程的状态为并做处理。这里可以看到中断后该线程还在继续往下执行,并没有强制终止线程。

1.如果线程在wait, sleep,join阻塞时,调用了interrupt()方法,会抛出InterruptedException异常,会清除中断标志位。
2.如果不会中断sleep,wait,join方法或文档描述的其他情况,就不会抛InterruptException异常,就不会清除中断标志位。

为了保证数据的一致性和完整性,我们需要用Thread.interrupt()方法再次中断自己,置上中断标志位。

  • interrupted()

测试当前线程是否已经中断。调用interrupted()会清除中断标志位。

  • isInterrupted()

测试线程是否已经中断。中断标志位 不受该方法的影响。

join()

主线程执行了subThread.join(),主线程会等待子线程执行完毕后,自己再执行。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容