Java中的守护进程线程数

Posted

技术标签:

【中文标题】Java中的守护进程线程数【英文标题】:Daemon Thread Count in Java 【发布时间】:2018-05-16 05:44:48 【问题描述】:

有没有办法获取在 java 中运行的活动守护线程的计数?

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

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

有人可以在这方面帮助我吗,或者任何关于这方面的参考资料也会有很大帮助。

提前致谢!

【问题讨论】:

【参考方案1】:

您可以通过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

【讨论】:

【参考方案2】:

我认为您可以使用ThreadMXBean#getDaemonThreadCount() API,它返回当前的实时守护线程数。

ManagementFactory.getThreadMXBean().getDaemonThreadCount();

更多信息请关注link。

【讨论】:

【参考方案3】:

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

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

【讨论】:

这给了我错误,我使用了下面的代码, Set threadSet = Thread.getAllStackTraces().keySet(); for(线程 ts : threadSet) if(ts.isDaemon()) count++;

以上是关于Java中的守护进程线程数的主要内容,如果未能解决你的问题,请参考以下文章

java中的守护进程

java中的守护进程

守护进程与非守护进程

119 python程序中的线程操作-守护线程

JAVA Join+线程优先级+守护进程

(转)Java中的守护线程