码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2017-07-27 15:46:33      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:lan   知识   ace   star   pre   this   static   tar   log   

  这里我们通过实例来学习一下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

 

友情链接

 

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

标签:lan   知识   ace   star   pre   this   static   tar   log   

原文地址:http://www.cnblogs.com/huhx/p/baseusejavathread9.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!