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,那就是還在執行,否則,會返回退出 該方法的優點是除了可以判斷是否已經退出,還可以獲取到退出 也就是可以判斷退出原因.該方法在呼叫後,會立即返回,如果需要等待執行緒呼叫...