关于interrupt,interrupted和isInterrupted的理解
来源:互联网 发布:阿里云 docker 加速 编辑:程序博客网 时间:2024/06/05 03:51
(1)interrupt:
调用interrupt()方法来停止线程,不会马上终止,它仅仅是在当前的线程中打了一个停止的标记。即不会影响线程的正常运行,只是该线程多了一个停止的标记而已。
(2)interrupted:
测试的是当前线程是否处于中断状态,是一个静态方法,在一次执行后具有将状态标志清除为false的状态。即连续两次调用该方法后,第二次调用则会返回false。源码如下:
(3)isInterrupted:
测试的是调用该方法的线程是否处于中断状态,是一个实例方法,不会清除状态标志。源码如下:
实例:
MyThread1.java
public class MyThread1 extends Thread{//@Overridepublic void run(){super.run();for(int i=0;i<500000;i++){System.out.println("i="+(i+1));}}}Run1.java
写了一下代码进行测试。
public class Run1 {public static void main(String[] args){/* * 此程序里面有3个线程,即thread,t1和main. * */MyThread1 thread=new MyThread1(); Thread t1=new Thread(thread);thread.start();t1.start();try {Thread.sleep(1000);System.out.println(Thread.currentThread().getName());//thread.interrupt();//t1.interrupt();//Thread.currentThread().interrupt();System.out.println("是否停止0?"+Thread.currentThread().interrupted());System.out.println("是否停止1?"+thread.interrupted());System.out.println("是否停止2?"+thread.isInterrupted());System.out.println("是否停止3?"+t1.interrupted());System.out.println("是否停止4?"+t1.isInterrupted());} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println("end");}}
(1)此时没有任何的中断,所以输出结果均为false。
(2)若把Thread.currentThread().interrupt();加到代码中,结果为0为true,1,2,3和4为false。首先,因为interrupted()测试的是当前线程的状态,而当前线程的状态已经发生了中断,所以为true,但是又因为interrupted()有清除状态的功能,所以其他调用该方法的结果都是false。
(3)若把thread.interrupt();加到代码中,结果为0,1,3,4是false,2为true。因为isInterrupted()测试的是调用该方法的线程的状态。因此只有2为true。
(4)若把t1.interrupt()加到代码中,结果为0,1,2,3为false,4为true。原因同上。
阅读全文
0 0
- 关于interrupt,interrupted和isInterrupted的理解
- 对于interrupt,interrupted 和 isInterrupted的一些理解
- interrupt,interrupted和isInterrupted
- 关于interrupt,interrupted,isInterrupted的一点看法。
- 【Java】interrupt、interrupted和isInterrupted的区别
- JAVA interrupt、interrupted和isInterrupted的区别
- interrupt(),interrupted() 和 isinterrupted() 的区别
- java---interrupt、interrupted和isInterrupted的区别
- interrupt、interrupted和isInterrupted的区别
- interrupt、interrupted和isInterrupted的区别
- interrupt、interrupted和isInterrupted的区别
- interrupt(),interrupted() 和isInterrupted()使用
- Thread类的interrupt,interrupted,isInterrupted方法的理解
- Thread类的interrupt,interrupted,isInterrupted方法的理解
- Thread类的interrupt,interrupted,isInterrupted方法的理解
- Thread类的interrupt,interrupted,isInterrupted方法的理解
- interrupt(), isInterrupted(), interrupted() 方法的区别
- 多线程中的Interrupt、Interrupted、IsInterrupted 的区分
- python 基础(一)
- STL(五)泛化技术分析
- sublime text 3 实现markdown 实时预览的方法
- java中的抽象类和接口
- 如何将数值类型转换为数字?
- 关于interrupt,interrupted和isInterrupted的理解
- 2.步骤分析
- 应该如何考核性能测试的成果?
- 20.软件缺陷管理流程(2)
- geotools中等值面的生成与OL3中的展示
- SpringMVC学习-->第一天-搭建开发环境
- Dingo(一)
- tensorflow data type
- canvas画布的使用