Java提供了中斷機制,能夠在中斷線程的執行,執行的線程會檢查中斷狀態,能夠選擇忽略中斷信號,也能夠中斷程序java
public class PrimeGenerator extends Thread { @Override public void run() { long number=1L; while(true) { if (isPrime(number)) { System.out.printf("Number %d is Prime\n", number); } // 檢查是否中斷 if (isInterrupted()) { System.out.printf("The Prime Generator has been Interrupted\n"); return; } number++; } } private boolean isPrime(long number) { if (number <= 2) { return true; } for (long i = 2; i < number; i++) { if ((number % 2) == 0) { return false; } } return true; } public static void main(String[] args) { Thread task=new PrimeGenerator(); task.start(); try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } //中斷線程 task.interrupt(); } }
線程屬性中保存着一個boolean類型的值,用來標識線程是否已經被中斷,當調用interrupt()方法時,將會設置這個屬性爲true,而調用isInterrupt()方法僅僅返回這個屬性的值;ide
線程對象的 interrupt() 和 isInterrupt()方法的主要區別是: interrupt()方法將會設置爲false, isInterrupt()方法僅僅返回這個屬性值,推薦使用isInterrupt()方法
線程