【Java 多線程併發】終止線程 4 種方式

1.正常運行結束

程序運行結束,線程自動結束。

2.使用退出標誌退出線程

一般 run() 方法執行完,線程就會正常結束。然而,常常有些線程是伺服線程。

伺服線程,不間斷地執行,往往在run方法中有一個死循環,監視着某些條件,只有當這些條件滿足時才能結束。

使用一個變量來控制循環,例如:最直接的方法就是設一個 boolean 類型的標誌,並通過設置這個標誌爲 true 或 false 來控制 while 循環是否退出,代碼示例:

public class ThreadSafe extends Thread {
    public volatile boolean exit = false;
    public void run() {
        while(!exit) {
            // do something
        }
    }
}

定義了一個退出標誌 exti ,當 exit 爲 true 時,while 循環退出,exit 的默認值爲 false。

在定義 exit 時,使用了一個 Java 關鍵字 volatile,這個關鍵字的目的是使 exit 同步,也就是說同一時刻只能有一個線程來修改 exit 的值。

3. Interrupt 方法結束線程

使用 interrupt() 方法來中斷線程有兩種情況:

1.線程處於阻塞狀態:如使用了 sleep,同步鎖的 wait,socket 中的 receiver,accept 等方法時,會使線程處於阻塞狀態。

當調用線程的 interrupt() 方法時,會拋出 Interrupt

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章