JDK26中LazyConstant的具体使用

 更新时间:2026年05月20日 15:16:19   作者:考虑考虑  
LazyConstant是JDK26之后引入的新属性,是一个延迟常量,之前的JDK25中的StableValue已经移除了,改成这个了,它本质是一个持有不可变数据的容器,能够实现对象的按需初始化,下面就来详细的介绍一下

前言

LazyConstantJDK26之后引入的新属性,是一个延迟常量,之前的JDK25中的StableValue已经移除了,改成这个了,它本质是一个持有不可变数据的容器,能够实现对象的按需初始化,旨在替代传统复杂且易错的延迟初始化模式

LazyConstant使用

以往开发者为了实现延迟初始化,通常需要使用双重检查锁定,但是 LazyConstant 完美解决了上述痛点,其核心优势包括:

  • 按需初始化:只在首次调用 get() 方法时才执行初始化逻辑,显著提升应用启动性能。
  • 内置线程安全:JVM 保证初始化过程的线程安全性,开发者无需再编写任何同步代码或双重检查锁定逻辑。
  • JVM 深度优化:一旦值被初始化,JVM 会将其视为真正的 final 常量,从而开启常量折叠(constant folding) 等高级优化。后续调用 get() 时,JIT 编译器可能直接将结果内联,性能远超传统的 volatile 懒加载方案。
  • 简化代码:消除了繁琐的延迟初始化样板代码,提升了代码的可读性与可维护性。

LazyConstant使用

public class UserService {

    public String say() {
        return "success";
    }
}
public class LazyConstantDemo {

    static void main(String[] args) {
        LazyConstant<UserService> lazyConstant = LazyConstant.of(() -> {
            System.out.println();
            return new UserService();
        });
        UserService a = lazyConstant.get();
        System.out.println(a);
    }
}

输出结果为

总结

LazyConstantJDK26的一个预览属性,但是是线程安全安全的,可以使用看看,使用 LazyConstant 非常简洁,只需通过 LazyConstant.of() 工厂方法传入一个 Supplier 函数即可定义惰性常量。该值在首次访问后会被缓存,且永不改变

到此这篇关于JDK26中LazyConstant的具体使用的文章就介绍到这了,更多相关JDK26 LazyConstant内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java集合快速构建成树形json实例

    java集合快速构建成树形json实例

    文章介绍了如何使用Java构建树形结构的JSON,并实现了一个代码工具来简化这一过程,该工具使用类适配器模式,允许灵活切换树形结构,且无需修改实体类代码,提高了代码的可维护性和扩展性
    2025-11-11
  • 使用SSM+Layui+Bootstrap实现汽车维保系统的示例代码

    使用SSM+Layui+Bootstrap实现汽车维保系统的示例代码

    本文主要实现对汽车维修厂的信息化管理功能,。实现的主要功能包含用户管理、配置管理、汽车管理、故障管理、供应商管理、配件管理、维修订单管理、统计信息、公告管理、个人信息管理,感兴趣的可以了解一下
    2021-12-12
  • MyBatis-Plus通过version机制实现乐观锁的思路

    MyBatis-Plus通过version机制实现乐观锁的思路

    version机制的核心思想就是,假设发生并发冲突的几率很低,只有当更新数据的时候采取检查是否有冲突,而判断是否有冲突的依据就是version的值是否被改变了,这篇文章主要介绍了MyBatis-Plus通过version机制实现乐观锁的思路,需要的朋友可以参考下
    2021-09-09
  • 基于String不可变字符与StringBuilder可变字符的效率问题

    基于String不可变字符与StringBuilder可变字符的效率问题

    这篇文章主要介绍了String不可变字符与StringBuilder可变字符的效率问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • Java 基础之事务详细介绍

    Java 基础之事务详细介绍

    这篇文章主要介绍了Java 基础之事务详细介绍的相关资料,需要的朋友可以参考下
    2017-03-03
  • 详谈Feign的配置类是如何生效的

    详谈Feign的配置类是如何生效的

    这篇文章主要介绍了Feign的配置类是如何生效的,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • Spring ApplicationContext上下文核心容器深入探究

    Spring ApplicationContext上下文核心容器深入探究

    ApplicationContext是Spring应用程序中的中央接口,由于继承了多个组件,使得ApplicationContext拥有了许多Spring的核心功能,如获取bean组件,注册监听事件,加载资源文件等
    2023-01-01
  • Netty分布式server启动流程Nio创建源码分析

    Netty分布式server启动流程Nio创建源码分析

    这篇文章主要介绍了Netty分布式server启动流程Nio创建源码分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-03-03
  • Java IO 之文件读写简单实例

    Java IO 之文件读写简单实例

    这篇文章主要介绍了Java IO 之文件读写简单实例的相关资料,需要的朋友可以参考下
    2017-06-06
  • Spring Boot ActiveMQ发布/订阅消息模式原理解析

    Spring Boot ActiveMQ发布/订阅消息模式原理解析

    这篇文章主要介绍了Spring Boot ActiveMQ发布/订阅消息模式原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07

最新评论