详解线程interrupt()方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了详解线程interrupt()方法相关的知识,希望对你有一定的参考价值。

参考技术A 线程的 interrupt()方法只是设置线程的中断标记,当对处于阻塞状态的线程调用interrupt方法时(处于阻塞状态的线程是调用sleep, wait, join 的线程),会抛出InterruptException异常,而这个异常会清除中断标记。正常运行的线程调用interrupt()不会清除中断标记。

通过interrupt()我们可以优雅的结束一个线程;有人会说stop()也可以呀,但是stop会出现一种情况,如果线程锁住了共享资源,那么当它调用stop被杀死后就再也没有机会释放锁了,其它线程将永远无法获取,所有这种结束线程的方式是不安全的也是不建议的。

优雅的结束线程是指,当线程死亡的时候,它可以做一些善后的事情。我们通过如下的代码就可以优雅的结束一个线程。

以上是关于详解线程interrupt()方法的主要内容,如果未能解决你的问题,请参考以下文章

JUC并发编程 -- 线程常用方法之interrupt 方法详解 & 设计模式之两阶段终止 & 打断 park 线程

中断线程的玩法 interrup()interrupted()isInterrupted()

关于线程 interrupt

并发编程(学习笔记-Java线程)-part2

Thread的interrupt()方法

多线程——interrupt方法