標籤: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 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多線程的使用(九)