关于java单例模式中双重检查锁的问题

查看:171
本文介绍了关于java单例模式中双重检查锁的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

网上查阅资料发现用双重检查锁实现单例模式,会出现由于Java内存模型导致偶尔创建失败的问题。
那么
问题1:这个失败的情况和JDK版本有关系么,在新版本的jdk下是否还会出现这个问题?
问题2:实际项目中,最常用的是使用哪种方式实现单例模式的呢?

解决方案

  1. 这个失败的情况和JDK版本有关系么,在新版本的jdk下是否还会出现这个问题?

    jdk 5就增强了volidate语义,你现在用的jdk版本基本没问题

  2. 实际项目中,最常用的是使用哪种方式实现单例模式的呢?
    根据《effective java》的相关描述,现在用枚举类完成单例模式是最牛逼的

public enum Singleton  {
    INSTANCE;

    public Connection getConnection() {
        return null;
    }

    public static void main(String[] args) throws SQLException {
        Singleton.INSTANCE.getConnection().createStatement();
    }
}

这篇关于关于java单例模式中双重检查锁的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆