【发布时间】:2013-02-28 11:47:00
【问题描述】:
我有一个多线程应用程序,我通过setName() 属性为每个线程分配一个唯一的名称。现在,我想要使用相应名称直接访问线程的功能。
类似下面的函数:
public Thread getThreadByName(String threadName) {
Thread __tmp = null;
Set<Thread> threadSet = Thread.getAllStackTraces().keySet();
Thread[] threadArray = threadSet.toArray(new Thread[threadSet.size()]);
for (int i = 0; i < threadArray.length; i++) {
if (threadArray[i].getName().equals(threadName))
__tmp = threadArray[i];
}
return __tmp;
}
上述函数检查所有正在运行的线程,然后从正在运行的线程集中返回所需的线程。也许我想要的线程被中断了,那么上面的函数就不起作用了。关于如何合并该功能的任何想法?
【问题讨论】:
-
线程是如何创建的?
-
只需将您需要的线程按名称存储在
HashMap<String, Thread>中。 -
@JohnVint 线程正在另一个类中创建,所以我无法直接访问它们。
-
@DKN 听起来你需要一个单身人士。
-
@DKN 真的没有通用的例子。当然你知道如何使用
HashMaps,所以有一个作为线程注册表,可以在 1. 创建线程的位置和 2. 您需要检索它们的位置访问。这两个在很大程度上取决于您的应用程序的内部结构。
标签: java android multithreading