如果仅给出线程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