线程中止
【信息】
不正确的线程中止-Stop
- Stop:中止线程,并且清除监控器锁的信息,但是可能导致线程安全问题,JDK不建议用。
- Destroy:JDK未实现
正确的线程中止-interrupt
如果目标线程在调用Object class的wait()、wait(long)或wait(long,int)方法、join()、join(long)、join(long,int)、sleep(long)或sleep(long,int)方法时被阻塞。那么interrupt会生效,该线程的中断状态将被清除,抛出InterruptedException异常。
如果目标线程是被I/O或NIO中的Channel所阻塞,同样,I/O操作会被中断或者返回特殊异常值。达到终止线程的目的。
如果以上条件都不满足,则会设置此线程的中断状态。
synchronize保证原子性
所见即所得
正确的线程中止-标志位
代码需要循环执行时
代码逻辑中,增加一个判断,用来控制线程执行的中止。
【思考】
什么地方会用到线程中止?有什么用?
【行动/反馈】
查下问题:
- 什么是中断?
在Java中没有办法立即停止一条线程,然而停止线程却显得尤为重要,如取消一个耗时操作。因此,Java提供了一种用于停止线程的机制——中断。
Java里一个线程调用了Thread.interrupt()到底意味着什么?
【钩子】
线程中止
【出处】
Java高级开发工程师-线程中止
【时间】
2018-12-24
若涉及版权问题,请及时联系作者删除。
更多精彩文章请关注
近期评论