本文目錄一覽:
java 怎麼強制關閉 一個線程 ?
在Java的多線程編程中,java.lang.Thread類型包含了一些列的方法start(), stop(), stop(Throwable) and suspend(), destroy() and resume()。通過這些方法,我們可以對線程進行方便的操作,但是這些方法中,只有start()方法得到了保留。\x0d\x0a在Sun公司的一篇文章《Why are Thread.stop, Thread.suspend and Thread.resume Deprecated? 》中詳細講解了捨棄這些方法的原因。\x0d\x0a如果真的需要終止一個線程,可以使用以下幾種方法: \x0d\x0a1、讓線程的run()方法執行完,線程自然結束。(這種方法最好)\x0d\x0a\x0d\x0a2、通過輪詢和共享標誌位的方法來結束線程,例如while(flag){},flag的初始值設為真,當需要結束時,將flag的值設為false。(這種方法也不很好,因為如果while(flag){}方法阻塞了,則flag會失效)\x0d\x0a如果線程因為執行sleep()或是wait()而進入Not Runnable狀態,假如是wait() 用標誌位就方法就不行了,\x0d\x0apublic final void wait(long timeout)\x0d\x0a throws InterruptedException此方法導致當前線程(稱之為 T)將其自身放置在對象的等待集中,然後放棄此對象上的所有同步要求。即當前線程變為等待狀態\x0d\x0await() 的標準使用方法\x0d\x0asynchronized(obj){\x0d\x0awhile(){\x0d\x0aobj.wait();\x0d\x0a}\x0d\x0a滿足條件的處理過程\x0d\x0a}\x0d\x0a而您想要停止它,您可以使用第三種即\x0d\x0a3 使用interrupt(),而程式會丟出InterruptedException例外,因而使得執行緒離開run()方法
如何停止一個Java線程
1. 使用退出標誌,使線程正常退出,也就是當run方法完成後線程終止。
2. 使用stop方法強行終止線程(這個方法不推薦使用,因為stop和suspend、resume一樣,也可能發生不可預料的結果)。
3. 使用interrupt方法中斷線程。
1. 使用退出標誌終止線程
當run方法執行完後,線程就會退出。但有時run方法是永遠不會結束的。如在服務端程序中使用線程進行監聽客戶端請求,或是其他的需要循環處理的任務。在這種情況下,一般是將這些任務放在一個循環中,如while循環。如果想讓循環永遠運行下去,可以使用while(true){……}來處理。但要想使while循環在某一特定條件下退出,最直接的方法就是設一個boolean類型的標誌,並通過設置這個標誌為true或false來控制while循環是否退出。下面給出了一個利用退出標誌終止線程的例子。
如何在JAVA中讓一個線程死亡或結束?
當線程執行完畢或被其它線程殺死,線程就進入死亡狀態,這時線程不可能再進入就緒狀態等待執行。
線程進入死亡狀態的方法有兩種:
1、自然終止:正常運行run()方法後終止;
2、異常終止:調用stop()方法讓一個線程終止運行。
如下代碼:
public class ThreadDemo implements Runnable{
public void run() {
}
}
當run方法執行結束,即線程死亡(結束)。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/295950.html