标签:lan 知识 ace star pre this static tar log
这里我们通过实例来学习一下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
标签:lan 知识 ace star pre this static tar log
原文地址:http://www.cnblogs.com/huhx/p/baseusejavathread9.html