Virtual-Thread-Executor
Virtual-Thread-Executors für unbegrenzte leichtgewichtige Nebenläufigkeit verwenden.
Code-Vergleich
✕ 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.
Warum der moderne Weg gewinnt
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
JDK-Unterstützung
Virtual-Thread-Executor
Verfügbar
Weitgehend verfügbar seit JDK 21 LTS (Sept. 2023)
Wie es funktioniert
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.
Zugehörige Dokumentation