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

Sam*_*ley 21 java multithreading android

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

例如

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

bes*_*sss 15

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

  • 旧方法:获取可以Thread.currentThread().getGroup()在循环中访问..getParent()的根线程组.并打电话enumerate(Thread[])

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

第一种方法有一个小问题,由于存在错误ThreadGroup.destroy(),ThreadGroup可能根本不会枚举任何东西.

第二种是较慢并且存在安全漏洞.

  • 您能详细说明一下安全漏洞吗? (2认同)