Java 實例 - 終止線程
Java中原來在Thread中提供了stop()方法來終止線程,但這個方法是不安全的,所以一般不建議使用。
本文向大家介紹使用interrupt方法中斷線程。
使用interrupt方法來終端線程可分為兩種情況:
- (1)線程處於阻塞狀態,如使用了sleep方法。
- (2)使用while(!isInterrupted()){……}來判斷線程是否被中斷。
在第一種情況下使用interrupt方法,sleep方法將拋出一個InterruptedException例外,而在第二種情況下線程將直接退出。下麵的代碼演示了在第一種情況下使用interrupt方法。
ThreadInterrupt.java 檔
public class ThreadInterrupt extends Thread
{
public void run()
{
try
{
sleep(50000); // 延遲50秒
}
catch (InterruptedException e)
{
System.out.println(e.getMessage());
}
}
public static void main(String[] args) throws Exception
{
Thread thread = new ThreadInterrupt();
thread.start();
System.out.println("在50秒之內按任意鍵中斷線程!");
System.in.read();
thread.interrupt();
thread.join();
System.out.println("線程已經退出!");
}
}
以上代碼運行輸出結果為:
在50秒之內按任意鍵中斷線程! sleep interrupted 線程已經退出!