Javaでマルチスレッド(並列処理)に関する質問があります。実際に、私は2つのマンデルブロ集合を計算するプログラムを実現:Javaでのマルチスレッド計算
最初の起動Nスレッドを、各スレッドは、マンデルブロ(例:https://www.logre.eu/mediawiki/images/4/49/Mandelbrot_h_block.png)の高さの一部を計算します。
2番目のスレッドは、各スレッドがマンデルブロのピクセル行を計算するn個のスレッドのプールを起動します(例:https://www.logre.eu/mediawiki/images/f/f2/Mandelbrot_horizontal.png)。
私は2つのコアのマシン上の別のプロファイリングを行い、スレッドの数(n)は、コア数よりも大きい場合、最初のプログラムは、第二よりも高速である理由を私は理解していません。スレッドの数がコアの数よりも少ない場合、これは逆です。
誰でも手伝ってもらえますか?
注:このプログラムを計算するスレッドにも制限がありますか?
これには必要なすべての詳細がありません。コードを見たり、それをどのようにプロファイルしたりすることなく、私たちはあなたが正しく正確にそれをしたことを知りません。タイミングを見ることなく、我々は違いがどれほど重要であるかを知らない。私達は 'n 'を知らない。 – weston