静态的方法可以用类名直接来调取
interrupt()——这不是真正将线程结束,而是向线程发起一个终端通知,获取到该通知后,线程会有一个中断标记,在业务逻辑中,我们判断该标记为true,由业务逻辑代码将线程真正中断
public class Test12 {
public static void main(String[] args) {
Thread t =new Thread(()->{
while(true){
System.out.println("我是子线程");
}
});
t.start();
t.interrupt();
}
}
结果:一直输出“我是子线程”,死循环
interrupted()——判断当前线程是否收到了中断通知,返回一个boolean类型,如果收到了中断通知,那么就将中断通知清除
加入判断语句:
public class Test12 {
public static void main(String[] args) {
Thread t =new Thread(()->{
while(true){
if(Thread.interrupted())
System.out.println("我是子线程");
break;
}
});
t.start();
t.interrupt();
}
}
程序中断
interrupted()——判断当前线程是否收到了中断通知,返回一个boolean类型,如果收到了中断通知,那么就将中断通知清除
isInterrupted()——判断当前线程是否收到了中断通知,并返回一个boolean
public class Test12 {
public static void main(String[] args) {
Thread t =new Thread(()->{
while(true){
System.out.println(Thread.currentThread().isInterrupted());//得到当前对象
if(Thread.interrupted()){ //当收到中断通知清除
System.out.println(Thread.currentThread().isInterrupted());
break;}
System.out.println("我是子线程");
}
});
t.start();
t.interrupt();
}
}
结果:
第一句:得到当前对象是否获得中断通知,为true
System.out.println(Thread.currentThread().isInterrupted());//得到当前对象
在经过语句:
if(Thread.interrupted())
中断通知被清除,因此
System.out.println(Thread.currentThread().isInterrupted());//得到当前对象
判断为false
2182

被折叠的 条评论
为什么被折叠?



