详解线程interrupt()方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了详解线程interrupt()方法相关的知识,希望对你有一定的参考价值。
参考技术A 线程的 interrupt()方法只是设置线程的中断标记,当对处于阻塞状态的线程调用interrupt方法时(处于阻塞状态的线程是调用sleep, wait, join 的线程),会抛出InterruptException异常,而这个异常会清除中断标记。正常运行的线程调用interrupt()不会清除中断标记。通过interrupt()我们可以优雅的结束一个线程;有人会说stop()也可以呀,但是stop会出现一种情况,如果线程锁住了共享资源,那么当它调用stop被杀死后就再也没有机会释放锁了,其它线程将永远无法获取,所有这种结束线程的方式是不安全的也是不建议的。
优雅的结束线程是指,当线程死亡的时候,它可以做一些善后的事情。我们通过如下的代码就可以优雅的结束一个线程。
以上是关于详解线程interrupt()方法的主要内容,如果未能解决你的问题,请参考以下文章
JUC并发编程 -- 线程常用方法之interrupt 方法详解 & 设计模式之两阶段终止 & 打断 park 线程