Java Thread.Interrupt方法
阿新 • • 發佈:2018-12-07
Thread.interrupt()方法
Thread.interrupt()
方法不會終止一個正在執行的執行緒,只是發出一個阻塞狀態,呼叫Thread.isInterrupted()
方法可以判斷。
public class ThreadInterrupt extends Thread { public void run() { boolean pause = false; while (!pause) { } System.out.println("In ThreadInterrupt end at " + System.currentTimeMillis()); } public static void main(String[] args) { try { ThreadInterrupt t = new ThreadInterrupt(); t.start(); Thread.sleep(100); t.interrupt(); System.out.println("In Thread main ThreadInterrupt.isInterrupted() = " + t.isInterrupted()); } catch (InterruptedException e) { } } }
輸出
In Thread main ThreadInterrupt.isInterrupted() = true
但ThreadInterrupt
一直沒有停止,可以修改判斷條件來達到目的。
public void run() {
while (!isInterrupted()) {
}
System.out.println("In ThreadInterrupt end at " + System.currentTimeMillis());
}
輸出
In Thread main ThreadInterrupt.isInterrupted() = true In ThreadInterrupt end at 1543820081439
interrupt方法與wait和sleep
如果執行緒處於wait
或sleep
狀態下,interrupt
方法都會使執行緒發生InterruptedException
異常。
相關文章
Java wait和notify方法
Java Thread.sleep方法
Java Thread.Interrupt方法
Java Thread.join方法