Heim > Java > javaLernprogramm > Wie kann ich Thread-Pools für parallele Java 8-Streams anpassen?

Wie kann ich Thread-Pools für parallele Java 8-Streams anpassen?

Mary-Kate Olsen
Freigeben: 2024-12-19 15:51:10
Original
825 Leute haben es durchsucht

How Can I Customize Thread Pools for Java 8 Parallel Streams?

Anpassen von Thread-Pools für Java 8 Parallel Streams

Java 8 führte parallele Streams ein und bietet effiziente Parallelität für datenintensive Vorgänge. Allerdings ist die Angabe benutzerdefinierter Thread-Pools für parallele Streams nach wie vor ein schwer fassbares Feature. Dieser Artikel befasst sich mit diesem Problem und stellt eine Problemumgehung mit ForkJoinPool vor.

Ein Hauptproblem bei Standard-Thread-Pools ist das Potenzial für Blockierungsverhalten. Eine langsam laufende Aufgabe in einem Stream kann die Ausführung in anderen parallelen Streams behindern. Dies ist insbesondere bei Multithread-Anwendungen problematisch, bei denen Isolation entscheidend ist.

Um diese Einschränkung zu überwinden, können Sie für jede Aufgabe einen eigenen ForkJoinPool erstellen. Beim Ausführen eines parallelen Streams als separate Aufgabe innerhalb dieses ForkJoinPools bleibt der Stream isoliert und verwendet den angegebenen Thread-Pool anstelle des Standard-Thread-Pools.

Beachten Sie den folgenden Codeausschnitt:

final int parallelism = 4;
ForkJoinPool forkJoinPool = null;
try {
    forkJoinPool = new ForkJoinPool(parallelism);
    final List<Integer> primes = forkJoinPool.submit(() ->
        IntStream.range(1, 1_000_000).parallel()
                .filter(PrimesPrint::isPrime)
                .boxed().collect(Collectors.toList())
    ).get();
    System.out.println(primes);
} catch (InterruptedException | ExecutionException e) {
    throw new RuntimeException(e);
} finally {
    if (forkJoinPool != null) {
        forkJoinPool.shutdown();
    }
}
Nach dem Login kopieren

Dieser Code erstellt einen neuen ForkJoinPool mit einer angegebenen Parallelität und führt darin einen parallelen Stream aus. Der parallele Stream arbeitet in seinem isolierten Pool und verhindert so mögliche Störungen durch andere Threads.

Dieser Ansatz bietet eine bessere Kontrolle über die Thread-Zuweisung, sodass Entwickler parallele Streams unterteilen und Ressourceneffizienz in Multithread-Anwendungen sicherstellen können.

Das obige ist der detaillierte Inhalt vonWie kann ich Thread-Pools für parallele Java 8-Streams anpassen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage