問題タブ [forkjoinpool]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - カスタム ForkJoinPool でネストされた ArrayList.ParallelStream() がスレッドを不均等に使用する
カスタム ForkJoinPool を使用して、ArrayList.parallelStream() との並列処理を強化したいと考えています (デフォルトでは共通プールを使用します)。
私はこれをします:
そして、 VisualVMでの動作を観察すると、次のように表示されます。
ある時点で、いくつかのスレッドが保留され、他のスレッドが残りの作業を行います。ダンプを見てみると、何もしないスレッドがパーキング状態になっていました。
実験的に、2 のべき乗である並列処理パラメーターを使用して ForkJoinPool を作成すると、すべて問題ないことが明らかになりました...
64 未満の 2 のべき乗のいずれかになります (理由はわかりませんが、ForkJoinPool の 34 スレッドを超えません) が、2 のべき乗でない場合、奇妙な動作が発生します。
なぜそれが起こるのですか?それを扱う方法は?
java - testng で forkjoinpool をテストする
ForkJoinPool を使用して REST サービスへの非同期呼び出しをチェックするいくつかのテストを作成したいと考えています。次のコードがあります。
私のテストでは、次のコードがあります。
問題は、テストを実行すると永遠に実行されることです。Thread.sleep() を追加して、それが変わるかどうかを確認しようとしましたが、そうではありません。テストをデバッグしようとすると、すべての準備コードがテストされたメソッドを呼び出し、到達するfirstList= someJoinTask1.get();
とsomeMethod();
ハングします。
これは私のスレッド ダンプです (必要かどうかはわかりません)。
私はTestNgとMockitoを使用しています