💡 1. Plattform-Threads vs. Virtual Threads
Java 21 revolutioniert Concurrency: Während Plattform-Threads 1:1 teure OS-Kernel-Threads sind, verwaltet die JVM Millionen leichtgewichtiger Virtual Threads:
// 1. Virtual Thread starten (Java 21+):
Thread vThread = Thread.startVirtualThread(() -> {
System.out.println("Laufe auf virtuellem Thread: " + Thread.currentThread());
});
vThread.join();
// 2. ExecutorService für 10.000 parallele Tasks:
try (var executor = Executors.newVirtualThreadPerTaskExecutor()) {
IntStream.range(0, 10_000).forEach(i -> {
executor.submit(() -> {
Thread.sleep(100); // Blockiert keinen Kernel-Thread!
return i;
});
});
} // Automatischer Shutdown am Blockende
Ein Plattform-Thread ist ein riesiger Container-Frachter: Er braucht enorme Ressourcen (~1MB Stack). Ein Virtual Thread ist ein kleines Papierboot: Du kannst mühelos 1.000.000 davon in deinen Pool werfen, ohne dass das Wasser überläuft!
⚡ 2. Quick-Cheat-Sheet
| Eigenschaft | Plattform Thread | Virtual Thread (Loom) |
|---|---|---|
| Speicherverbrauch | ~1 MB Stack (fest) | Wenige Kilobytes (dynamisch im Heap) |
| Maximale Anzahl | Einige Tausend pro Server | Millionen gleichzeitig |
| Erzeugung | Teuer (Kernel-Systemaufruf) | Nahezu kostenlos (JVM-Objekt) |
| Blockierende I/O | Blockiert echten Kernel-Thread | JVM unmountet Task, Kernel läuft weiter |
⚠️ 3. Häufige Stolperfallen (Gotchas & Anti-Patterns)
Zwei Threads, die gleichzeitig count++ ausführen, verlieren Inkremente! Schütze kritische Sektionen mit AtomicInteger oder ReentrantLock.
Virtual Threads sollen NIEMALS gepoolt werden! Erzeuge einfach für jede einzelne Aufgabe einen neuen virtuellen Thread.
🧠 4. Diagnostischer Selbst-Check
Überprüfe dein Verständnis von Sprach-Features, Speicherverwaltung und Enterprise-Architektur, bevor du den Code in der Web-IDE schreibst.