全屏浏览
缩小浏览
回到页首

java基础---->多线程之interrupt(九)

  这里我们通过实例来学习一下java多线程中关于interrupt方法的一些知识。执者失之。我想当一个诗人的时候,我就失去了诗,我想当一个人的时候,我就失去了我自己。在你什么也不想要的时候,一切如期而来。


java多线程中的interrupt实例

一、java中的interrupt的使用

public class InterruptTest {
    public static void main(String[] args) {
        MyThread1 myThread1 = new MyThread1();
        myThread1.start();

        myThread1.interrupt();
        System.out.println("isInterrupted is " + myThread1.isInterrupted()); // true
        System.out.println("isInterrupted is " + myThread1.interrupted()); // false
    }

    static class MyThread1 extends Thread {
        @Override
        public void run() {
            try {
         // The interrupted status of the thread is cleared by this method
                System.out.println("in isInterrupted is " + Thread.interrupted()); // true
                System.out.println("isInterrupted is " + Thread.currentThread().isInterrupted()); // false
                TimeUnit.SECONDS.sleep(5);
                System.out.println("my thread 1");
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

如果注释掉代码:System.out.println("in isInterrupted is " + Thread.interrupted());则打印的结果如下:

isInterrupted is true
isInterrupted is false
isInterrupted is true
java.lang.InterruptedException: sleep interrupted
    at java.lang.Thread.sleep(Native Method)
    at java.lang.Thread.sleep(Thread.java:340)
    at java.util.concurrent.TimeUnit.sleep(TimeUnit.java:360)
    at com.linux.huhx.thread2.InterruptTest$MyThread1.run(InterruptTest.java:21)

二、多线程中的中断停止线程运行

public class InterruptTest {
    public static void main(String[] args) throws Exception {
        MyThread1 myThread1 = new MyThread1();
        myThread1.start();

        myThread1.interrupt();
        System.out.println("isInterrupted is " + myThread1.isInterrupted()); // true
        System.out.println("isInterrupted is " + myThread1.interrupted()); // false
    }

    static class MyThread1 extends Thread {
        @Override
        public void run() {
            while (true) {
                if (Thread.interrupted()) {
                    System.out.println("break");
                    break;
                }
                System.out.println("count " + Thread.currentThread().isInterrupted()); // count false
            }
        }
    }
}

一次的运行结果如下:

isInterrupted is true
isInterrupted is false
break

posted @ 2017-07-27 14:42  huhx  阅读(301)  评论(0编辑  收藏  举报