1.interrupt()表示打断一个线程.
interrupt():
如果被打断线程正在 sleep
,
wait
,
join
会导致被打断
的线程抛出 InterruptedException
,并清除
打断标
记,打断标记为false ;如果打断的正常运行的线程,则会设置
打断标
记 为true
1.1当打断sleep的线程:
public static void main(String[] args) {
Object object = new Object();
Thread thread = new Thread(() -> {
try {
sleep(5000);
System.out.println("你好55555");
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("小明:可以干活了");
});
thread.start();
thread.interrupt();
}
![](https://img-blog.csdnimg.cn/528f03ef27754637bdd870c177659ebd.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bC8542U,size_20,color_FFFFFF,t_70,g_se,x_16)
1.2当打断正常执行的线程不会报错,会正常执行.
public static void main(String[] args) {
Object object = new Object();
Thread thread = new Thread(() -> {
// try {
// sleep(5000);
// System.out.println("你好55555");
// } catch (InterruptedException e) {
// e.printStackTrace();
//
// }
while (true) {
System.out.println("小明:可以干活了");
}
});
thread.start();
thread.interrupt();
}
2.isInterrupted()和interrupted() 都是判断线程是否被打断.可以根据判断打断标记决定是否结束当前线程.
isInterrupted()判断之后不会清除打断标记,打断标记不变
interrupted() 判断之后会清除打断标记,将打断标记改为false