开发者社区 问答 正文

在Java的并发场景下,如何优化延迟初始化的问题隐患?

在Java的并发场景下,如何优化延迟初始化的问题隐患??

展开
收起
大葱蘸大酱2 2021-10-13 13:58:56 635 分享
分享
版权
1 条回答
写回答
取消 提交回答
  • 在并发场景下,通过双重检查锁(double-checked locking)实现延迟初始化的优化问题隐患(可参考 The "Double-Checked Locking is Broken" Declaration),推荐解决方案中较为简单一种(适用于 JDK5 及以上版本),将目标属性声明为 volatile 型。

    反例:

    class Singleton {

    private Helper helper = null;

    public Helper getHelper() {

    if (helper == null) synchronized(this) {

    if (helper == null)

    helper = new Helper();

    }

    return helper;

    }

    // other methods and fields...

    }

    资料来源:电子书《阿里巴巴Java开发手册》,下载链接:https://developer.aliyun.com/topic/download?id=1092

    2021-10-13 14:01:26 举报
    赞同 评论

    评论

    全部评论 (0)

    登录后可评论
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等