Streams Fortgeschritten

Virtual-Thread-Executors für unbegrenzte leichtgewichtige Nebenläufigkeit verwenden.

✕ Java 8
ExecutorService exec =
    Executors.newFixedThreadPool(10);
try {
    futures = tasks.stream()
        .map(t -> exec.submit(t))
        .toList();
} finally {
    exec.shutdown();
}
✓ Java 21+
try (var exec = Executors
        .newVirtualThreadPerTaskExecutor()) {
    var futures = tasks.stream()
        .map(exec::submit)
        .toList();
}
Problem mit diesem Code entdeckt? Sag uns Bescheid.
♾️

Keine Dimensionierung

Keine Pool-Größe festzulegen – so viele Threads erstellen wie benötigt.

Leichtgewichtig

Virtuelle Threads verwenden KB statt MB Speicher.

🧹

Auto-closeable

try-with-resources übernimmt das Herunterfahren automatisch.

Alter Ansatz
Fixer Thread-Pool
Moderner Ansatz
Virtual-Thread-Executor
Seit JDK
21
Schwierigkeitsgrad
Fortgeschritten
Virtual-Thread-Executor
Verfügbar

Weitgehend verfügbar seit JDK 21 LTS (Sept. 2023)

Der Virtual-Thread-Executor erstellt für jede Aufgabe einen neuen virtuellen Thread. Keine Pool-Dimensionierung nötig – virtuelle Threads sind günstig genug, um Millionen davon zu erstellen.

Teilen 𝕏 🦋 in