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