Concurrency Avanzado

Reemplaza el double-checked locking con StableValue para singletons perezosos.

✕ Java 8
class Config {
    private static volatile Config inst;
    static Config get() {
        if (inst == null) {
            synchronized (Config.class) {
                if (inst == null)
                    inst = load();
            }
        }
        return inst;
    }
}
✓ Java 25 (Preview)
class Config {
    private static final
        StableValue<Config> INST =
            StableValue.of(Config::load);

    static Config get() {
        return INST.get();
    }
}
¿Ves un problema con este código? Cuéntanos.
🧹

Sin código repetitivo

Sin volatile, synchronized ni double-null-check.

Lecturas más rápidas

La JVM puede plegar constantes después de la inicialización.

Corrección demostrable

Sin errores sutiles de ordenamiento — la JVM se encarga.

Enfoque Antiguo
synchronized + volatile
Enfoque Moderno
StableValue
Desde JDK
25
Dificultad
Avanzado
Inicialización perezosa sin bloqueos
Preview

Preview en JDK 25 (JEP 502, StableValue). Requiere --enable-preview.

StableValue encapsula el patrón de inicialización perezosa con seguridad entre hilos correcta. La JVM puede optimizar la ruta de lectura después de la inicialización, haciéndola potencialmente más rápida que las lecturas volatile.

Compartir 𝕏 🦋 in