interrupt()深入理解

2019-06-27  本文已影响0人  enjoycc97

线程中断的理解
例子一
线程调用interrupt()线程会中止吗?

 for(int i=0;i<1000;i++){
            if(i==10){
                Thread.currentThread().stop();
            }
            System.out.println(i);
        }

结果是打印0-9,因为到10线程stop停止了

 for(int i=0;i<1000;i++){
            if(i==10){
                Thread.currentThread().interrupt();
            }
            System.out.println(i);
        }

线程打印0-1000,interrupt不会导致循环停止

分析一下interrupt()是设置线程的中断状态
例如Thread.sleep()是要强制捕捉interrupt异常的
可以试一下

Thread test = new Thread() {
            @Override
            public void run() {
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
        };
        test.start();
        test.interrupt();

sleep是会触发异常的
总结interrupt()是设置中断标志,线程可以判断Thread,isInterrupted()判断线程已经中断,但是直接调用此方法线程仍然继续运行

上一篇 下一篇

猜你喜欢

热点阅读