Java 21 Virtual Threads (Project Loom) vs Platform Threads
1 milyon eşzamanlı isteği sadece birkaç işletim sistemi thread'iyle yönetme devrimi.
Geleneksel Platform Thread: Her yolcu için özel şoförlü lüks bir otobüs tahsis etmektir (pahalı ve az sayıda). Virtual Thread: Aynı otobüse binlerce yolcuyu metro gibi dinamik doldurup boşaltmaktır.
Platform Thread'ler doğrudan İşletim Sistemi (OS) kernel thread'ine 1:1 bağlıdır (her biri ~1MB bellek yer). Virtual Thread'ler ise JVM seviyesinde yönetilen, bellek ayak izi sadece birkaç byte olan M:N kullanıcı iş parçacıklarıdır. I/O bloklandığında altındaki Carrier Thread'i serbest bırakır.
“Virtual Threads (Project Loom), Spring Boot'ta reaktif programlamanın (WebFlux) getirdiği karmaşık zincirleme kod yapısına gerek kalmadan, geleneksel bloklayıcı (thread-per-request) kod yazarak yüz binlerce isteği ölçeklememizi sağlar.”
// Java 21 ile 100.000 sanal thread başlatmak:
try (var executor = Executors.newVirtualThreadPerTaskExecutor()) {
IntStream.range(0, 100_000).forEach(i -> {
executor.submit(() -> {
Thread.sleep(1000); // Thread'i bloke etmez, JVM serbest bırakır!
return i;
});
});
}
Virtual Thread'leri ThreadPool ile havuza almaya çalışmak! Virtual thread'ler tek kullanımlıktır, pool'a ihtiyaç duymaz.