Java (Spring Boot) İleri Seviye Concurrency

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.

5 Yaşındaki Çocuğa Anlatır Gibi (Analoji)

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.

Teknik & Mimari Tanım

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.

Mülakatta Ne Demelisin? (Kurtarıcı Altın Cevap)

“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 (Spring Boot) Örnek Uygulaması
// 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;
        });
    });
}
Mülakat Tuzağı & Adayların En Sık Yaptığı Hata:

Virtual Thread'leri ThreadPool ile havuza almaya çalışmak! Virtual thread'ler tek kullanımlıktır, pool'a ihtiyaç duymaz.