0

我们如何通过它的名称终止一个ThreadThreadGroup实例?

4

2 回答 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种方式。

  1. 调用stop()方法。它已被弃用,你不应该使用它,因为它可能会导致系统进入不一致的状态。但是,如果您真的想要……仍然支持此方法。
  2. 每个线程都应该支持关闭机制,即可以用来通知线程退出其run()方法的“协议”。如果所有线程都是你的,你可以让它们实现你自己的接口(例如Terminatable),方法terminate()是改变标志的值并导致线程退出。在这种情况下,终止线程的代码应该遍历线程,检查线程应该被终止并且它实现了 interface Terminatable,转换为它并调用它的terminate()方法。
于 2013-03-20T16:44:56.327 回答