これは、Java スレッドが異なるコアで実行されるようにする方法 に表示されている質問と同様の質問です。しかし、Java ではその点で多くの進歩があった可能性があり、また、その質問で探している答えを見つけることができませんでした。
マルチスレッドプログラムを書き終えました。プログラムは複数のスレッドを生成しますが、複数のコアを使用しているようには見えません。プログラムは高速です (高速化するものを並列化しています) が、「top」を実行して判断すると、利用可能なすべてのコアを確実に使用しているわけではありません。
何か案は?それは予想される動作ですか?
一般的なコード構造は次のとおりです。
for (some values in i)
{
start a thread of instantiated as MyThread(i)
(this thread uses heavily ConcurrentHashMap and arrays and basic arithmetic, no IO)
add the thread to a list T
}
foreach (thread in T)
{
do thread.join()
}