So partitionieren Sie eine Liste und senden gleichzeitig AnfragenJava

Java-Forum
Guest
 So partitionieren Sie eine Liste und senden gleichzeitig Anfragen

Post by Guest »

Ich möchte eine Liste in Unterlisten unterteilen und parallel eine Anfrage für jede Unterliste senden.
Ich habe eine Liste mit Produkt-IDs und möchte sie in Unterlisten unterteilen mit der Größe 3.

Code: Select all

List productBatches = StreamSupport.stream(Iterables.partition(productIds, 3).spliterator(), true).toList();
List
 productPrices = productBatches.parallelStream()
.map(batch -> productPriceService.getProductsPrices(batch))
.flatMap(List::stream)
.toList();
Nehmen wir an, ich habe zwei Stapel, aber ich habe in Opensearch getestet, dass die letztere Anfrage gesendet wird, nachdem die erste zurückgegeben wurde.

Code: Select all

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();
Ich habe jedoch einen Test wie unten geschrieben und hatte einen bedingten Haltepunkt, um bei „test3“ anzuhalten. Alle anderen Zeichenfolgen in der Liste wurden erfolgreich gedruckt. Ich habe keine Ahnung, warum der Test parallel verarbeitet werden kann, während die Implementierung für Produktpreise nicht möglich ist

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post