結束執行緒的方法

2021-07-27 06:27:28 字數 1608 閱讀 5475

thread 和 runnable

(1)theread是個類。 run()、getname()方法

(2)runnable是乙個介面。thread.currentthread().getname()

runnable 建立物件方法:thread acctressthread = new thread(new actress(),」ms.runnable」);

結束執行緒的三種方法:

1. 使用退出標誌,使執行緒正常退出,也就是當run方法完成後執行緒終止。

2.  使用stop方法強行終止執行緒(這個方法不推薦使用,因為stop和suspend、resume一樣,也可能發生不可預料的結果)。 

3. 使用interrupt方法中斷執行緒。

1、使用退出標誌

public class examplethread extends thread

}}public static void main(string args)

2. 使用stop方法終止執行緒 

使用stop方法可以強行終止正在執行或掛起的執行緒。我們可以使用如下的**來終止執行緒:

thread.stop();

雖然使用上面的**可以終止執行緒,但使用stop方法是很危險的,就象突然關閉計算機電源,而不是按正常程式關機一樣,可能會產生
不可預料的結果,因此,並不推薦使用stop方法來終止執行緒。

3. 使用interrupt方法終止執行緒 

使用interrupt方法來終端執行緒可分為兩種情況:

(1)執行緒處於阻塞狀態,如使用了sleep方法。

(2)使用while(!isinterrupted())來判斷執行緒是否被中斷。

在第一種情況下使用interrupt方法,sleep方法將丟擲乙個interruptedexception例外,而在第二種情況下執行緒將直接退出。下面的代

碼演示了在第一種情況下使用interrupt方法。

package chapter2;

public class threadinterrupt extends thread

catch (interruptedexception e) }

public static void main(string args) throws exception }

上面**的執行結果如下: 

在50秒之內按任意鍵中斷執行緒!

sleep interrupted

執行緒已經退出!

在呼叫interrupt方法後, sleep方法丟擲異常,然後輸出錯誤資訊:sleep interrupted.

注意:在thread類中有兩個方法可以判斷執行緒是否通過interrupt方法被終止。乙個是靜態的方法interrupted(),乙個是非靜態的方

法isinterrupted(),這兩個方法的區別是interrupted用來判斷當前線是否被中斷,而isinterrupted可以用來判斷其他執行緒是否被中斷

。因此,while (!isinterrupted())也可以換成while (!thread.interrupted())。

執行緒結束方法

執行緒屬於一次性消耗品,在執行完run 方法之後執行緒便會正常結束了,執行緒結束後便會銷毀,不能再次start,只能重新建立新的執行緒物件,但有時run 方法是永遠不會結束的。例如在程式中使用執行緒進行socket監聽請求,或是其他的需要迴圈處理的任務。在這種情況下,一般是將這些任務放在乙個迴圈中,...

Interrupt方法結束執行緒

4.1.5.3.interrupt 方法結束執行緒使用interrupt 方法來中斷執行緒有兩種情況 1.執行緒處於阻塞狀態 如使用了sleep,同步鎖的wait,socket中的receiver,accept等方法時,會使執行緒處於阻塞狀態。當呼叫執行緒的interrupt 方法時,會丟擲inte...

判斷執行緒是否結束的方法

1 getexitcodethread 比較原始的方法了,呼叫 getexitcodethread,如果返回still active,那就是還在執行,否則,會返回退出 該方法的優點是除了可以判斷是否已經退出,還可以獲取到退出 也就是可以判斷退出原因.該方法在呼叫後,會立即返回,如果需要等待執行緒呼叫...