Перевополщение 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
· 22.07
Осталось только дождаться когда JEP 526 выйдет из предварительной версий. Сейчас эта фича пока не для прода.
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
коммент удалён