有没有办法让java中的活动守护程序线程运行?
我用了Thread.getAllStackTraces().keySet().size()
,但没有给出正确的结果。
This question引用了守护程序线程的数量,但它没有相同的代码。
有人可以帮助我,或者对此提出任何参考也会有很大的帮助。
提前致谢!
答案 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++;
}
}