我们如何通过它的名称终止一个Thread
或ThreadGroup
实例?
问问题
6235 次
2 回答
5
像这样的东西
Thread[] a = new Thread[1000];
int n = Thread.enumerate(a);
for (int i = 0; i < n; i++) {
if (a[i].getName().equals(name)) {
a[i].interrupt();
break;
}
}
尽管 interrupt() 不会终止线程,但 stop() 会(尽管已弃用)
于 2013-03-20T16:26:34.353 回答
3
这取决于您说“终止”时的意思。
但第一个提示是,您必须获取要终止的所有线程的列表。用于Thread.getThreads()
执行此操作。如果需要,您可以按组过滤线程。
现在,如何停止线程?有2种方式。
- 调用
stop()
方法。它已被弃用,你不应该使用它,因为它可能会导致系统进入不一致的状态。但是,如果您真的想要……仍然支持此方法。 - 每个线程都应该支持关闭机制,即可以用来通知线程退出其
run()
方法的“协议”。如果所有线程都是你的,你可以让它们实现你自己的接口(例如Terminatable
),方法terminate()
是改变标志的值并导致线程退出。在这种情况下,终止线程的代码应该遍历线程,检查线程应该被终止并且它实现了 interfaceTerminatable
,转换为它并调用它的terminate()
方法。
于 2013-03-20T16:44:56.327 回答