首页 > 代码库 > java基础---->java多线程的使用(九)

java基础---->java多线程的使用(九)

  这里我们通过实例来学习一下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 trueisInterrupted is falseisInterrupted is truejava.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 trueisInterrupted is falsebreak

 

友情链接

 

java基础---->java多线程的使用(九)