有没有办法使用代码打印出所有线程及其id,status?
例如,我有5个主题,我想枚举所有主题。
答案 0 :(得分:1)
使用 。Thread.currentThread()的getId();
答案 1 :(得分:1)
您可以执行以下操作。
Set<Thread> threadSet = Thread.getAllStackTraces().keySet();
for (Thread thread: threadSet) {
System.out.println(thread.getId());
}
确保在使用之前阅读并理解方法Thread.getAllStackTraces()。
答案 2 :(得分:-1)
如果您需要从程序的其他部分控制线程,请将线程对象分配给公共变量,或者如果您只想知道正在运行的内容,则将其直接打印出来:
public int myThreadId = 0;
public void run () {
System.out.println("Thread Name: " + Thread.currentThread().getName(); // Printing the thread name
myThreadId = Thread.currentThread().getId(); // Assigning the thread ID to a public variable
}
阅读更多:如何获取对Java线程的引用| eHow.com http://www.ehow.com/how_6879305_reference-java-thread.html#ixzz2FfEUe3cF
另外
获取根ThreadGroup的句柄,如下所示:
ThreadGroup rootGroup = Thread.currentThread( ).getThreadGroup( );
ThreadGroup parentGroup;
while ( ( parentGroup = rootGroup.getParent() ) != null ) {
rootGroup = parentGroup;
}
现在,重复调用根组上的enumerate()函数。第二个参数允许您递归地获取所有线程:
Thread[] threads = new Thread[ rootGroup.activeCount() ];
while ( rootGroup.enumerate( threads, true ) == threads.length ) {
threads = new Thread[ threads.length * 2 ];
}
注意我们如何重复调用enumerate(),直到数组足够大以包含所有条目。