如果僅給出線程ID,您將如何中斷或停止線程?說,線程ID是格式很長。上述基於線程ID的中斷線程
-1
A
回答
0
開始與Thread.enumerate和Thread.activeCount
Thread findThreadById(long id) {
Thread [] threads = new Thread[Thread.activeCount() * 2];
int count = Thread.enumerate(threads);
for (int i = 0; i < count; i++) {
if (threads[i].getId() == id) {
return threads[i];
}
}
return null;
}
Thread.activeCount(增加一倍)是捕捉到的情況下的線程數的呼叫之間增加到Thread.activeCount和Thread.enumerate。它可能需要也可能不需要,但除了幾個字節的內存外不應該花費太多。
所以不是你有你想要的Thread實例,只是調用Thread.interrupt。
注意 - 一個線程的硬停止和終止是不好的形式。根據某種條件(由另一個線程設置)尋找讓線程自行退出的方法要好得多。
0
隨着線程的合作,使用它提供的任何方法。沒有線程的合作,你不能。在沒有合作的情況下中斷或停止線程會破壞該進程。 (假設線程擁有另一個線程需要的鎖定或打破了即將恢復的不變量)。
此問題傾向於來自對線程和進程的糟糕思考方式。主題合作完成工作。任何時候,如果你覺得你需要「從外部進入」某個線程來「製造」它做的是正確的事情,那應該是一個警告,你首先把線編碼錯了。編碼線程去做什麼,只做什麼,你想要做什麼。那麼你不必中斷或停止它。
如果由於某種原因這是不可能的,那麼設計到該線程的代碼中斷或停止它的能力。
相關問題
- 1. 通過ID中斷線程
- 2. 線程中斷()不會中斷線程
- 3. 基於ID的線程同步
- 4. 中斷線程
- 5. 線程中斷
- 6. 基於Prority的線程?
- 7. 基於多線程的基於pthread的多線程實用程序庫
- 8. java線程中斷,線程爲空
- 9. 線程:如何中斷該線程外部的線程
- 10. 線程和中斷
- 11. SwingWorker中斷線程
- 12. Java - 中斷線程?
- 13. 基於標籤的多功能UIButton線程中斷UILabel
- 14. java中的線程中斷
- 15. Java中的線程中斷
- 16. 中斷Java中的線程
- 17. 中斷DatagramSocket.receive中的線程
- 18. 中斷java中的線程
- 19. C++的基於線程的線程安全的std :: cerr
- 20. 誰中斷我的線程?
- 21. XCode中線程的斷點
- 22. Java 6的線程中斷
- 23. VB.NET中斷的線程
- 24. 在線程開始之前獲取線程的線程ID
- 25. dispatch_get_main_queue()的線程ID
- 26. 線程ID的GetModuleFileNameEx?
- 27. 基於來自調用線程的變量值關閉線程
- 28. Qt中的線程ID
- 29. 線程ID與線程句柄
- 30. 線程ID從線程名稱
[This](http://stackoverflow.com/questions/7786305/stopping-a-specific-java-thread)可能會有所幫助。 – Akshay 2014-09-04 01:31:55