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

已经被抛弃的方法:

通过调用stop()

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

 

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

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

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

 

目前使用的方法:

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

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

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

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

      

示例代码:

问七:如何中断一个线程?_第1张图片

 

你可能感兴趣的:(Java多线程&并发)