美文网首页
interrupt()深入理解

interrupt()深入理解

作者: enjoycc97 | 来源:发表于2019-06-27 17:29 被阅读0次

    线程中断的理解
    例子一
    线程调用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()判断线程已经中断,但是直接调用此方法线程仍然继续运行

    相关文章

      网友评论

          本文标题:interrupt()深入理解

          本文链接:https://www.haomeiwen.com/subject/dryrcctx.html