问七:如何中断一个线程?

已经被抛弃的方法:

通过调用stop()

通过调用suspend()和resume()方法

 

废弃原因(再写具体一点):

太过暴力,可能会导致一些清理工作不会完成

调用后会直接释放锁,可能会导致数据不同步的问题https://www.jianshu.com/p/e0ff2e420ab6

 

目前使用的方法:

调用interrupt(),通知线程应该中断

1.如果线程处于阻塞状态,那么线程将立即退出阻塞状态,并抛出一个InterruptedException异常

2.如果线程处于正常活动状态,那么会将该线程的中断标志设置为true,被设置中断标志的线程将继续正常运行,不受影响。

注:需要被调用的线程配合中断:1.在正常运行任务时,经常检查本线程的中断标志,如果中断标志为true,就寻找一个安全的位置自行停止线程。2.如果线程处于正常活动状态,那么会将该线程的中断标志设置为true,被设置的线程将继续运行,不受影响。

      

示例代码:

 

全部评论

相关推荐

05-29 20:34
门头沟学院 C++
KarlAllen:得做好直接春招的准备。学历差的话,一是面试要求会比学历好的严格不少,二是就算面试通过了也会被排序。总之暑期和秋招对于学历差的就是及其不友好
点赞 评论 收藏
分享
牛客383479252号:9,2学生暑期实习失利开始投小厂,给这群人整自信了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务