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

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

阅读 3.9k
1 个回答
  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();
    }
}

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题