Java中的守护程序线程计数

时间:2018-05-16 05:44:48

标签: java multithreading daemon java-threads

有没有办法让java中的活动守护程序线程运行?

我用了Thread.getAllStackTraces().keySet().size(),但没有给出正确的结果。

This question引用了守护程序线程的数量,但它没有相同的代码。

有人可以帮助我,或者对此提出任何参考也会有很大的帮助。

提前致谢!

3 个答案:

答案 0 :(得分:3)

您可以通过Thread.getAllStackTraces

来完成
public static void main(String[] args) {
   Set<Thread> threads =  Thread.getAllStackTraces().keySet();
   threads.forEach(t -> {
   System.out.println(t.getName()+ " : " + t.isDaemon()); // count if isDaemon is true
   });

}

O / P:

Signal Dispatcher : true 
main : false 
Finalizer : true 
Reference Handler : true

答案 1 :(得分:2)

我认为您可以使用ThreadMXBean#getDaemonThreadCount() API返回当前活动守护程序线程的数量。

ManagementFactory.getThreadMXBean().getDaemonThreadCount();

有关详情,请点击link

答案 2 :(得分:1)

您可以为此编写自定义实现,如

int daemonThreadCount = 0;
for (Thread thread : Thread.getAllStackTraces().keySet()) {
    if (thread.isDaemon()) {
        daemonThreadCount++;
    }
}