web-dev-qa-db-ja.com

Javaは複数のコアをどのように使用しますか?

JVMは単一のプロセスで実行され、JVMのスレッドはそのプロセスに属するヒープを共有します。次に、JVMは、高い同時実行性のために複数のOSスレッドを提供する複数のコアをどのように利用しますか?

62
Munish Sodhi

複数のスレッドを使用して、複数のコアを使用できます。ただし、マシンに存在するコアの数よりも多くのスレッドを使用すると、リソースが無駄になります。 availableProcessors() を使用して、コアの数を取得できます。

Java 7には fork/join framework があり、複数のコアを使用します。

関連質問:

27
Emil

グリーンスレッド は、Java 1.2。のネイティブスレッドに置き換えられました。

19
Steve-o

OSが利用可能なプロセッサにスレッドを分散する場合、Javaは複数のコアの恩恵を受けます。 JVM自体は、複数のコア間でスレッドを均等にスケジュールするために特別なことを行いません。留意すべきいくつかのこと:

  • 並列アルゴリズムを実装する際、コアと同じ数のスレッドを生成する方が良い場合があります。 (Runtime.getRuntime().availableProcessors())。それ以上でもそれ以下でもありません。
  • Java.util.concurrentパッケージで提供される機能を利用します。
  • 個人ライブラリに Java同時実行性 があることを確認してください。
18
Vijay Mathew