美文网首页
深入挖掘Thread.interrupt

深入挖掘Thread.interrupt

作者: enjoycc97 | 来源:发表于2018-10-18 22:50 被阅读0次

    如果想中断一个线程或者停止,通常使用interrupt操作,但是这个函数有什么用。
    中止一个线程?如果线程正在运行,下一个线程还在运行吗?

    public static final void main(String [] args) {
            Thread t = new Thread(new Runnable() {
                public void run() {
                    System.out.println("start");
                    int i=0;
                    while(i==0) {
                        
                    }
                    System.out.println("end");              
                }
            });
            t.start();
            try {
                Thread.sleep(2000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            t.interrupt();
        }
    

    运行上述代码,发现并没有预期中止线程,是interrupt不生效吗。
    查看java doc这个函数一方面是设置interrupted设置为true,
    Thread.interrupt()会为true 本身判断会清除标志位
    另一方面,像wait sleep join这些阻塞会被唤醒。同时触发异常
    测试代码如下。会打印异常信息。

    
    public class Learn {
        public static final void main(String [] args) {
            Thread t = new Thread(new Runnable() {
                public void run() {
                    System.out.println("start"+Thread.interrupted());
                    int i=0;
                    try {
                        Thread.sleep(100000);
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    System.out.println("after"+Thread.interrupted());
                    System.out.println("end");              
                }
            });
            t.start();
            try {
                Thread.sleep(2000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            t.interrupt();
            System.out.println(t.interrupted());
        }
    
    }
    

    触发打印异常,说明interrupt触发sleep的异常唤醒

    相关文章

      网友评论

          本文标题:深入挖掘Thread.interrupt

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