JVMは単一のプロセスで実行され、JVMのスレッドはそのプロセスに属するヒープを共有します。次に、JVMは、高い同時実行性のために複数のOSスレッドを提供する複数のコアをどのように利用しますか?
複数のスレッドを使用して、複数のコアを使用できます。ただし、マシンに存在するコアの数よりも多くのスレッドを使用すると、リソースが無駄になります。 availableProcessors() を使用して、コアの数を取得できます。
Java 7には fork/join framework があり、複数のコアを使用します。
関連質問:
グリーンスレッド は、Java 1.2。のネイティブスレッドに置き換えられました。
OSが利用可能なプロセッサにスレッドを分散する場合、Javaは複数のコアの恩恵を受けます。 JVM自体は、複数のコア間でスレッドを均等にスケジュールするために特別なことを行いません。留意すべきいくつかのこと:
Runtime.getRuntime().availableProcessors()
)。それ以上でもそれ以下でもありません。Java.util.concurrent
パッケージで提供される機能を利用します。