for (int i=0; i<100000; i++) {
// REST API request.
restTemplate.exchange(url, HttpMethod.GET, request, String.class);
}
У меня возникла ситуация, когда я должен запросить ресурс для пользователей 100 тыс., И это займет 70 минут. Я старался максимально очистить свой код, и я смог уменьшить его только на 4 минуты).Java 8: Как преобразовать цикл for для параллельной работы?
Поскольку каждый запрос не зависит друг от друга, я хотел бы отправлять запросы параллельно (может быть в 10, 100 или даже 1000 кусков, каждый из которых быстро заканчивается). Я надеюсь, что смогу сократить время до 10 минут или что-то близкое. Как рассчитать, какой размер куска быстро выполнит работу?
Я нашел следующий способ, но не могу определить, обрабатывает ли программа все 20 одновременно; или 5 за раз; или 10 за раз.
IntStream.range(0,20).parallel().forEach(i->{
... do something here
});
Я предлагаю вам помощь. Я открыт для любых предложений или критиков!
UPDATE: Я смог использовать IntStream, и задача была завершена за 28 минут. Но я не уверен, что это лучшее, что я мог бы сделать.
* Я открыт для любых предложений и критики !! * - Я думаю, вы получаете молчащие критики –
Параметр 'метод IntStream' будет обрабатывать несколько запросов, равное количеству ядер в вашем компьютере одновременно. Если вы хотите достичь большей скорости, используйте ** Async ** Http-клиенты. Поэтому блокировка не происходит, пока вы не получите ответ. –
@ScaryWombat Lol. Во-вторых, это! – WowBow