Как разделить список и отправлять запросы параллельноJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как разделить список и отправлять запросы параллельно

Сообщение Anonymous »

Я хотел бы разделить список на подсписки и отправить запрос для каждого подсписка параллельно.
У меня есть список идентификаторов продуктов, я хочу разделить его на подсписки размером 3.

Код: Выделить всё

List productBatches = StreamSupport.stream(Iterables.partition(productIds, 3).spliterator(), true).toList();
List
 productPrices = productBatches.parallelStream()
.map(batch -> productPriceService.getProductsPrices(batch))
.flatMap(List::stream)
.toList();
Предположим, у меня есть 2 пакета, но я проверил в opensearch, что последний запрос отправляется после возврата первого.

Код: Выделить всё

List list = new java.util.ArrayList(List.of());
for (int i = 0; i < 40; i++) {
list.add("test" + i);
}

List listBatches = StreamSupport.stream(Iterables.partition(list, 3).spliterator(), true).toList();

List testStrings = listBatches.parallelStream()
.map(batch -> {
System.out.println("Batch: " + batch.toString());
return String.join(",", batch);
})
.toList();
Однако я написал тест, как показано ниже, и имел условную точку останова для остановки на «test3», он успешно распечатал все остальные строки в списке. Я понятия не имею, почему тест можно обрабатывать параллельно, а реализацию цен на продукты нельзя

Подробнее здесь: https://stackoverflow.com/questions/793 ... n-parallel
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»