停止按名称运行Thread

时间:2015-10-09 11:57:01

标签: java multithreading

我有一个multithreaded应用程序,我通过setName()属性为每个线程分配一个唯一的名称。

现在,我希望功能能够直接使用相应的名称来访问线程以阻止它。

我怎么能得到它?

3 个答案:

答案 0 :(得分:1)

要查找使用此主题的主题:https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/ThreadUtils.htmlhttps://github.com/apache/commons-lang/blob/master/src/main/java/org/apache/commons/lang3/ThreadUtils.java

但是这只给你一个线程的引用,你不能简单地终止它(不推荐使用stop())。根据线程的作用,可能会中断它?

答案 1 :(得分:0)

我假设你试图通过线程(通过它的名字)来调用它上面的Thread.stop()。如果是这样的话 - 不要这样做。该方法已弃用 - isin

see why有一些关于如何正确停止线程的建议。

答案 2 :(得分:0)

如果您确实想要按名称访问某个帖子并且您没有可以使用的引用,则可以使用ThreadGroup并搜索由组和线程组成的树。正确的名字。

来自JavaDoc:

  

线程组表示一组线程。此外,线程组还可以包括其他线程组。线程组形成一个树,其中除初始线程组之外的每个线程组都有一个父节点。

因此,您应该能够调用Thread.currentThread().getThreadGroup(),使用getParent()查找初始/根组,使用enumerate(Thread[])列出所有活动线程并搜索线程。