私はマルチスレッド化にかなり慣れており、Javaプログラムで4つのCPUを利用しようとしているプロジェクトに取り組んでいます。私は何かをしたいと思ったスレッドとCPU間のJavaの関係
int numProcessors = Runtime.getRuntime().availableProcessors();
ExecutorService e = Executors.newFixedThreadPool(numProcessors);
これは私がCPUごとに1つのスレッドを動作させることを保証しますか?スレッドを作成する時点では、システムはビジーではありませんが、その後はしばらく時間がかかります。私は、OSがスレッドを作成するために最もビジー状態のCPUを選択すると思っていましたが、作成時にそれらのどれも特にビジーでない場合、どのように機能しますか?
また、スレッドプールサービスはスレッドを再利用することになっていますが、別のCPUで使用可能な空き領域が増えると、スレッドを強制終了して新しいスレッドを生成しますか?
お使いのOSはJavaではなくスレッドスケジューリングを行います。 –