for (int i=0; i<100000; i++) {
// REST API request.
restTemplate.exchange(url, HttpMethod.GET, request, String.class);
}
私は100kユーザーのリソースを要求しなければならない状況があり、終了するまでに70分かかります。私は可能な限りコードを整理しようとしましたが、私はそれを4分だけ減らすことができました。Java 8:forループを並列で実行するにはどうすればよいですか?
各リクエストは互いに独立しているので、私はリクエストを並行して送信したいと思っています(10秒、100秒、または1000秒のチャンクですばやく完了します)。私は10分かそれ以上の時間を短縮できると思っています。どのチャンクサイズでジョブをすばやく完了させるかを計算するにはどうすればよいですか?
私は次の方法を見つけましたが、プログラムが20個ずつ同時に処理するかどうかはわかりません。または一度に5つ。または10ずつ。
IntStream.range(0,20).parallel().forEach(i->{
... do something here
});
私はあなたの助けをappericiate。私はどんな提案や評論家にも開いています!
更新:私はIntStreamを使用することができ、タスクは28分で終了しました。しかし、私はこれが私が行くことができる最高ののか分からない。
*私は、任意の提案や批評家に開く!! * - 私はあなたが 'IntStream'方法は、一度パソコン内のコアの数に等しい要求の数を処理するサイレント批評家に –
を得ていると思います。速度を上げたい場合は、** Async ** Httpクライアントを使用してください。したがって、応答を受け取るまでブロッキングは発生しません。 –
@ SkaryWombat Lol。同感です! – WowBow