Счетчик демонов в Java - PullRequest
0 голосов
/ 16 мая 2018

Есть ли способ узнать количество активных потоков демонов, работающих в Java?

Я использовал Thread.getAllStackTraces().keySet().size(), но это не дало правильного результата.

В этом вопросе есть ссылка на количество потоков демонов, но у него не было никакого кода для этого.

Может кто-нибудь, пожалуйста, помогите мне в этом, или любая ссылка на это также будет очень полезна.

Заранее спасибо!

Ответы [ 3 ]

0 голосов
/ 16 мая 2018

Я думаю, вы можете использовать ThreadMXBean#getDaemonThreadCount() API, который возвращает текущее количество потоков живого демона.

ManagementFactory.getThreadMXBean().getDaemonThreadCount();

Для получения дополнительной информации перейдите по ссылке .

0 голосов
/ 16 мая 2018

Вы можете сделать это через 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
0 голосов
/ 16 мая 2018

Вы можете написать свою собственную реализацию для этого как

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