Перевополщение Stable Values в JDK 26

LazyConstant — новый API из JEP 526 для ленивой инициализации значений.

Идея: вместо ручного volatile, synchronized и double-checked locking можно создать LazyConstant, а значение вычислится при первом get(). Причём потокобезопасно и только один раз при успешной инициализации.

Отдельно интересно, что JVM получает гарантию неизменности вычисленного значения через @Stable и может применить constant folding. То есть это не просто удобный lazy-init, а ещё и потенциальная оптимизация на уровне рантайма.

Также появились ленивые List.ofLazy и Map.ofLazy: можно не считать всю коллекцию заранее, а вычислять конкретный элемент только при обращении к нему.

В целом — меньше шаблонного конкурентного кода и больше возможностей для оптимизаций JV

Перевополщение Stable Values в JDK 26
LazyConstant — новый API из JEP 526 для ленивой инициализации значений | Сетка — социальная сеть от hh.ru Перевополщение Stable Values в JDK 26
LazyConstant — новый API из JEP 526 для ленивой инициализации значений | Сетка — социальная сеть от hh.ru