Java プログラムで奇妙な動作が発生しています。基本的に、処理する項目のリストがあり、一度に 1 つずつ処理するか、一度にすべて処理するかを選択できます (一度に 3 ~ 4 を意味します)。各項目の処理には約 10 スレッドが必要なので、一度に 1 つの項目を処理する場合 = 10 スレッド、一度に 2 つの項目を処理する場合 = 20 スレッド、一度に 4 つの項目を処理する場合 = 40 スレッドなどです。
奇妙なことに、1 つのアイテムだけを処理すると、約 50 ~ 150 ミリ秒で完了します。しかし、一度に 2 つ処理すると、アイテムごとに最大 200 ~ 300 ミリ秒になります。一度に 3 つ = アイテムごとに 300 ~ 500MS、一度に 4 つ = アイテムごとに 400 ~ 700MS など。
なぜこうなった?jvm は最大 3000 から 4000 のスレッドを簡単に処理できるという以前の調査を行ったのに、なぜ 30 から 40 のスレッドだけで速度が低下するのでしょうか? これは正常な動作ですか?スレッドが 40 あるということは、各スレッドが本来のようにキューではなく並列に動作することを意味すると考えました。