Inicialización perezosa sin bloqueos
Reemplaza el double-checked locking con StableValue para singletons perezosos.
Comparación de Código
✕ 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.
Por qué gana la forma moderna
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
Soporte JDK
Inicialización perezosa sin bloqueos
Preview
Preview en JDK 25 (JEP 502, StableValue). Requiere --enable-preview.
Cómo funciona
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.
Documentación Relacionada