0

プログラムで実行されているスレッドの量を取得するソリューションを探していました。Get a List of all Threads currently running in Java のこの 2 つのソリューションに行き着きました。

使用する

Set<Thread> threadSet = Thread.getAllStackTraces().keySet();
runningThreads = threadSet.size();

最終的には75スレッドになります。


使用する

ThreadGroup rootGroup = Thread.currentThread( ).getThreadGroup( );
ThreadGroup parentGroup;
while ( ( parentGroup = rootGroup.getParent() ) != null ) {
        rootGroup = parentGroup;
}
Thread[] threads = new Thread[ rootGroup.activeCount() ];
while ( rootGroup.enumerate( threads, true ) == threads.length ) {
        threads = new Thread[ threads.length * 2 ];
}
runningThreads = threads.length;

スレッドの正確な2倍の量になります-> 150


なぜテアドが二重になっているのだろうと思っていたのですが、これを見ましたthreads = new Thread[ threads.length * 2 ];

なぜこの方法で 2 を掛けるのですか?

編集:
私の質問の形式が間違っているのかもしれません。今答えられても訂正したいです。問題は、サイズがすでに十分に大きい場合でも 2 を掛けて、現在実行中のスレッドの量を間違って取得する理由です。

4

1 に答える 1