您的位置:首页 > 其它

interrupt(),interrupted() 和isInterrupted()使用

2017-10-05 17:34 344 查看
Thread类中的三个方法:

public void interrupt() // 无返回值
public boolean isInterrupted() // 有返回值
public static boolean interrupted() // 静态,有返回值


① interrupt():中断本线程

myThread.interrupt();//中断的是调用interrupt()方法的线程

小结:阻塞于wait/join/sleep的线程,中断状态会被清除掉,同时收到著名的InterruptedException;而其他情况中断状态都被设置,并不一定收到异常。

② isInterrupted():检测本线程是否已经中断

myThread.isInterrupted();//判断本线程myThread是否中断

如果已经中断,则返回true,否则false。中断状态不受该方法的影响。

如果中断调用时线程已经不处于活动状态,则返回false。

③ interrupted():检测当前线程是否已经中断

Thread.interrupted();//判断该语句所在线程是否中断

如果已经中断,则返回true,否则false,并清除中断状态。换言之,如果该方法被连续调用两次,第二次必将返回false,除非在第一次与第二次的瞬间线程再次被中断。

如果中断调用时线程已经不处于活动状态,则返回false。

public static boolean interrupted() {
return currentThread().isInterrupted(true);
}


④ isInterrupted()与interrupted()的区别

isInterrupted()         interrupted()
实例方法                  类方法
判断本线程               判断当前线程
仅读取中断状态         读取并清除中断状态
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: