Java 實(shí)例 - 終止線程

Java 實(shí)例 Java 實(shí)例

Java中原來(lái)在Thread中提供了stop()方法來(lái)終止線程,但這個(gè)方法是不安全的,所以一般不建議使用。

本文向大家介紹使用interrupt方法中斷線程。

使用interrupt方法來(lái)終端線程可分為兩種情況:

  • (1)線程處于阻塞狀態(tài),如使用了sleep方法。
  • (2)使用while(!isInterrupted()){……}來(lái)判斷線程是否被中斷。

在第一種情況下使用interrupt方法,sleep方法將拋出一個(gè)InterruptedException例外,而在第二種情況下線程將直接退出。下面的代碼演示了在第一種情況下使用interrupt方法。

/*
 author by w3cschool.cn
 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秒之內(nèi)按任意鍵中斷線程!"); 
        System.in.read(); 
        thread.interrupt(); 
        thread.join(); 
        System.out.println("線程已經(jīng)退出!"); 
    } 
} 

以上代碼運(yùn)行輸出結(jié)果為:

在50秒之內(nèi)按任意鍵中斷線程!

sleep interrupted
線程已經(jīng)退出!

Java 實(shí)例 Java 實(shí)例