编程|并发编程——如何终止线程( 二 )




interrupted()
首先我们看到这个方法是一个静态方法 , interrupted()也调用了isInterrupted(true)方法 , 不过它传递的参数是true , 表示将会清除中断标志位 。
下面测试结果发现这个方法会在中断线程之后 , 会将Interrupted标志位清除 , 发现清除之后的结果为false 。

interrupt()
【编程|并发编程——如何终止线程】前面两个是判断是否中断的方法 , 而interrupt()就是真正触发中断的方法 。
中断线程 , 其实是设置线程的标识位为true 。
interrupt()源码:


1、使用isInterrupted()测试代码:

运行结果图:我们发现调用interrupt()之后 , 标志位变为true跳出循环 , 达到一个中断现成的目的 。

2、使用interrupted()测试代码:

运行结果图:我们发现调用interrupt()之后 , 标志位变为true第二次进入循环 , 发现不符合 , 跳出循环 , 达到一个中断现成的目的 。 但是使用interrupted()会清除标志位 , 所以会发现最后一次打印的和之前不一样了 , 变为false 。

这三个方法要搞清楚 , 这块可能会在面试的时候会问你这三个方法的区别 。
感谢诸君的观看 , 文中如有纰漏 , 欢迎在评论区来交流 。 如果这篇文章帮助到了你 , 欢迎点赞\uD83D\uDC4D关注 。