java - 从其 ID 获取对 Thread 对象的引用

标签 java android multithreading

如果我知道与该线程关联的 ID,我如何获得对正在运行的线程的引用?

例如

long threadID = 12342;
Thread thread = (What goes here?) getThreadFromId(threadID); //I know this is totally made up

最佳答案

您有两种方法可以做到这一点。 两者都很简单:

  • 老方法:获取你可以在循环中访问 Thread.currentThread().getGroup()..getParent() 的根线程组。并调用 enumerate(Thread[])

  • 较新(虽然较慢)。 for (Thread t : Thread.getAllStackTraces().keySet()) if (t.getId()==id)...

第一种方法有一个小问题,由于 ThreadGroup.destroy() 中的一个错误,一个 ThreadGroup 可能根本无法枚举任何东西。

不过,第二个速度较慢并且存在安全漏洞。

关于java - 从其 ID 获取对 Thread 对象的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6667496/

相关文章:

android - 如何生成我的 Android 项目的 aar 和 apk

java - Apache Thrift 在不同线程中重用连接

java - 两个不同执行 block 之间的同步器

java - 如何始终检查Android中的状况?

java - 金字塔图案

Android WorkManager 链式工作未在 alpha04 上运行

java - 父View折叠时如何清除子ViewHolder焦点?

multithreading - 哪些脚本语言支持多核编程?

java - Java 中的 map 和集合

JavaCV FFmpegFrameRecorder 将图像保存到视频