我想立即停止Java線程,但是當我嘗試線程停止之前總是需要一些時間。 有沒有一種強制Java線程立即停止的好方法?有沒有一種強制停止Java線程的好方法?
回答
運行線程無法使用Thread.Interrupt
停止,只能使用Thread.Interrupt
停止等待或阻塞線程。但使用共享變量來表示它應該停止正在執行的操作。線程應定期檢查變量(例如:使用while循環)並按順序退出。
private boolean isExit= false;
public void beforeExit() {
isExit= true;
}
public void run() {
while (!isExit) {
}
}
沒有什麼好的方法來立即停止線程。
有
Thread.stop()
,但它是危險的,不推薦使用。不要使用它,除非:你完全明白的問題,
你有徹底分析你的代碼,並確定該問題不適用和/或風險是可以接受的。
有
Thread.interrupt()
,但不保證線程會迅速停止,甚至都停止。有寫入線程定期檢查標誌的方法,但是如果標誌沒有經常檢查(意外或通過設計),則線程不會很快停止。
FWIW,標誌和interrupt()
方法在本質上是相同的。在這兩種情況下,期望中斷的線程都需要定期檢查;例如通過調用interrupted()
或isInterrupted()
或通過檢查一個標誌。區別在於interrupt()
機制將在代碼正在等待notify()
或阻塞和IO操作時起作用。因此,並且因爲interrupt
是一種獨立於應用程序的方式,所以應優先使用它,而不是應用程序特定的機制。
此外,如果您想使用使用Java基礎結構的標誌方法,則可以使用'Thread.currentThread.isInterrupted'。 – sixtyfootersdude
@sixtyfootersdude - 我相信我已經說過了。 –
不要在任何情況下使用Thread.stop - 如果你問這個問題,那麼你不明白Java線程模型足以安全地使用它。
的細節,爲好奇,在這裏:http://download.java.net/jdk7/archive/b131/docs/technotes/guides/concurrency/threadPrimitiveDeprecation.html
如果你在Java併發真的夠好,那麼你就會明白爲什麼你不應該使用它,即使它的內完全安全的自己的代碼,它會讓你的代碼被其他人污染和無法使用。相反,您最終可能會使用布爾變量技巧或某種其他模式來告訴線程何時完成並退出。
不要使用Thread.stop。永遠。
我幾乎允許我在鏈接上使用Thread.stop()thx! –
有一個好辦法安全(和快速)強行停止一個線程:
System.exit(0)
不幸的是,這種具有殺滅所有其他線程的副作用。
- 1. 好的方法來終止一個線程(沒有Thread.Abort)
- 2. MaualResetEventSlim沒有停止線程
- 3. Java:停止線程化TCP服務器的好方法?
- 4. 如何在沒有stop()方法的情況下停止線程?
- 5. 有沒有一種方法來比較每個線程的變量java
- 6. Java多線程停止方法
- 7. 尋找一種方法來停止/殺死一個線程
- 8. 有沒有一種方法來驗證JavaScript中的窗體來停止onSubmit()java方法解僱?
- 9. 如何停止從adb的android應用程序沒有強制停止或根?
- 10. 有沒有辦法無意中停止Executor的線程?
- 11. 有沒有一種很好的方法來防止重新定義jQuery?
- 12. 有沒有更好的方法來編寫這種方法?
- 13. 有沒有更好的方法來測試這種方法?
- 14. 有沒有一種很好的方法來分類wp
- 15. 有沒有一種驗證jQuery代碼的好方法?
- 16. CoreData - 有沒有一種很好的方法來放置物品?
- 17. 有沒有一種使用url_for ActiveResource的好方法?
- 18. 有沒有一種好的方法(PHP類)來訪問Gmail Contacs?
- 19. Java中有沒有一種方法可以從控制檯調用方法?
- 20. Tomcat抱怨線程沒有停止
- 21. 有沒有辦法立即停止線程?
- 22. Linux:有沒有一種方法可以在不停止/暫停進程的情況下使用ptrace(SIGSTOP)?
- 23. 通過滾動強制停止tableview時調用哪種方法?
- 24. 有沒有一種很好的方法來強制C中的類型不兼容?
- 25. 有沒有一種從mathml或latex中繪製圖形的好方法?
- 26. 殺死所有進程,強制所有進程停止
- 27. 有沒有一種獲得開放泛型方法的MethodInfo的好方法?
- 28. 有沒有辦法強制一些方法的類沒有指定參數?
- 29. java程序停止沒有錯誤
- 30. 有沒有一種方法可以強制執行特定方法簽名的方法?
取決於要求。那麼,你可以立即停止使用中斷() –
@Mohamed Saligh:我使用相同的。但花時間停止線程。我可以在我的服務器控制檯上看到該進程。 –
請在下面尋找答案.. –