Вы можете попробовать это:
public void printAllThreadIds() {
Thread currentThread = Thread.currentThread();
ThreadGroup threadGroup = getRootThreadGroup(currentThread);
int allActiveThreads = threadGroup.activeCount();
Thread[] allThreads = new Thread[allActiveThreads];
threadGroup.enumerate(allThreads);
for (int i = 0; i < allThreads.length; i++) {
Thread thread = allThreads[i];
long id = thread.getId();
System.out.println(id);
}
}
private static ThreadGroup getRootThreadGroup(Thread thread) {
ThreadGroup rootGroup = thread.getThreadGroup();
while (true) {
ThreadGroup parentGroup = rootGroup.getParent();
if (parentGroup == null) {
break;
}
rootGroup = parentGroup;
}
return rootGroup;
}
Но вы должны прерывать Thread
и не stop
его.
Метод Thread.stop()
устарел, поскольку он немедленно убивает Thread
. Таким образом, структуры данных, которые в настоящее время изменены этим Thread
, могут оставаться в несогласованном состоянии. Прерывание дает фильму возможность изящества.