isInterrupted()方法和Thread.interrupted()方法判断中断状态的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了isInterrupted()方法和Thread.interrupted()方法判断中断状态的区别相关的知识,希望对你有一定的参考价值。

①isInterrupted()方法:

  在Thread对象上调用isInterrupted()方法可以检查任何线程的中断状态,但是:线程一旦被中断,isInterrupted()方法便会返回true,而一旦sleep()方法抛出异常,它将恢复中断标志,isInterrupted()方法在此时就会返回false。

如下代码所示:技术分享

②Thread.interrupted()方法: 

  Thread.interrupted()方法是静态方法,不能再特定的线程中使用,只能报告调用它的线程的中断状态;

如果当前线程被中断,它会返回true,但是它会自动的重置中断状态为false;所以,第二次调用的时候,总是会返回false,除非中断了线程。

如下代码所示:

技术分享

 

以上是关于isInterrupted()方法和Thread.interrupted()方法判断中断状态的区别的主要内容,如果未能解决你的问题,请参考以下文章

为啥在实现 Runnable 时使用 Thread.currentThread().isInterrupted() 而不是 Thread.interrupted()?

Java 学习笔记之 线程isInterrupted方法

interrupted()和isInterrupted()比较

java interrupted与isInterrupted方法

自定义 Runnable 实现,检查每行代码之间的 Thread.currentThread().isInterrupted()

Thread的InterruptisInterruptedinterrupted