Concurrency İleri

volatile veya synchronized olmadan iş parçacığı güvenli tembel başlatma.

✕ Java 8
private volatile Logger logger;
Logger getLogger() {
    if (logger == null) {
        synchronized (this) {
            if (logger == null)
                logger = createLogger();
        }
    }
    return logger;
}
✓ Java 25 (Preview)
private final StableValue<Logger> logger =
    StableValue.of(this::createLogger);

Logger getLogger() {
    return logger.get();
}
Bu kodda bir sorun mu gördünüz? Bize bildirin.
🧹

Sıfır şablonsuz kod

volatile, synchronized veya null kontrolleri yok.

JVM-optimize

JVM başlatma sonrasında değeri katlayabilir.

🛡️

Bir kez garantili

Sağlayıcı, çakışma altında bile yalnızca bir kez çalışır.

Eski Yaklaşım
Çift Kontrollü Kilitleme
Modern Yaklaşım
StableValue
JDK'dan itibaren
25
Zorluk
İleri
Kararlı değerler
Önizleme

JDK 25'te önizleme (JEP 502). --enable-preview gerektirir.

StableValue, yerleşik iş parçacığı güvenliğiyle tembel başlatılmış, değiştirilemez bir değer sağlar. Çift kontrollü kilitleme yok, volatile alan yok, synchronized blok yok. JVM başlatma sonrasında okuma yolunu bile optimize edebilir.

Paylaş 𝕏 🦋 in