9

Java プログラムの単一スレッドは、CPU 上の複数のコアを自動的に利用できますか?

4

3 に答える 3

15

Java プログラムの単一スレッドは、CPU 上の複数のコアを自動的に利用できますか?

はいといいえ。単一スレッドの Java プログラムは、GC、JMX、ファイナライザー、およびその他のバックグラウンド スレッドを異なる CPU (CPU かコアかに関係なく) で実行できるという点で、複数のスレッドを使用します。GC スレッドは、別の CPU で実行できる場合、特にパフォーマンスが大幅に向上します。ただし、シングル スレッド アプリケーション コードは、 CPU 間で移動する可能性がありますが、同時に 2 つの CPU で実行されることはありません。

それを見つける方法は?

これは難しい質問であり、実行しているアーキテクチャによって異なります。 ps*nix の下では、実行キューに複数のスレッドがあるかどうかを表示できますが、それでも複数の CPU で実際に実行されていることが表示されない場合があります。

于 2013-04-10T20:58:14.573 に答える
1

独自のコードは、定義上シングル スレッドである場合、複数のコアでは実行されません。シングルスレッドアプリケーションは、マルチスレッド呼び出し/ライブラリを知らないうちに使用しない限り、複数のコアで同時に実行できません。

于 2013-04-10T21:00:28.057 に答える
0

通常、gc は別のスレッドで実行されます。しかし、通常は大きな違いはありません。それで全部です。

于 2013-04-10T20:57:27.617 に答える