JAVA終止線程的方法

JAVA終止線程的方法

如何正確地停止一個線程

方法如下:

  1. 使用退出標誌,使線程正常退出,也就是當 run 方法完成後線程終止
  2. 使用 interrupt 方法中斷線程
  • 退出標誌法:

需要 while() 循環在某以特定條件下退出,最直接的辦法就是設一個 boolean 標誌,並通過設置這個標誌來控制循環是否退出:

JAVA終止線程的方法

需要注意的是:isCancelled 需要為 volatile,保證線程讀取時 isCancelled 是最新數據

  • interrupt法終止:

如果線程是阻塞的,則不能使用退出標誌法來終止線程。這時就只能使用 Java 提供的中斷機制:

  • void interrupt()

如果線程處於被阻塞狀態,那麼線程將立即退出被阻塞狀態,並拋出一個 InterruptedException 異常

如果線程處於正常活動狀態,那麼該線程的中斷標誌為 true。

  • static boolean interrupted()

測試當前線程是否被中斷。這一調用會將當前線程的中斷狀態重置為 false

  • boolean isInterrupted()

測試線程是否被終止。不像靜態的中斷方法,這一調用不改變線程的中斷狀態

終止 實例代碼

JAVA終止線程的方法

以上代碼運行輸出結果為:

JAVA終止線程的方法


分享到:


相關文章: