Si può provare questo:
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;
}
Ma si dovrebbe interrompere una Thread
e non stop
esso.
Il metodo Thread.stop()
è obsoleto perché uccide immediatamente un Thread
. Pertanto, le strutture di dati attualmente modificate da questo Thread
potrebbero rimanere in uno stato incoerente. L'interruzione dà al filo la possibilità di spegnersi con grazia.
fonte
2013-08-14 06:18:08