Java プログラムの単一スレッドは、CPU 上の複数のコアを自動的に利用できますか?
3 に答える
Java プログラムの単一スレッドは、CPU 上の複数のコアを自動的に利用できますか?
はいといいえ。単一スレッドの Java プログラムは、GC、JMX、ファイナライザー、およびその他のバックグラウンド スレッドを異なる CPU (CPU かコアかに関係なく) で実行できるという点で、複数のスレッドを使用します。GC スレッドは、別の CPU で実行できる場合、特にパフォーマンスが大幅に向上します。ただし、シングル スレッド アプリケーション コードは、 CPU 間で移動する可能性がありますが、同時に 2 つの CPU で実行されることはありません。
それを見つける方法は?
これは難しい質問であり、実行しているアーキテクチャによって異なります。 ps
*nix の下では、実行キューに複数のスレッドがあるかどうかを表示できますが、それでも複数の CPU で実際に実行されていることが表示されない場合があります。
独自のコードは、定義上シングル スレッドである場合、複数のコアでは実行されません。シングルスレッドアプリケーションは、マルチスレッド呼び出し/ライブラリを知らないうちに使用しない限り、複数のコアで同時に実行できません。
通常、gc は別のスレッドで実行されます。しかし、通常は大きな違いはありません。それで全部です。