关于java单例模式中双重检查锁的问题
本文介绍了关于java单例模式中双重检查锁的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
网上查阅资料发现用双重检查锁实现单例模式,会出现由于Java内存模型导致偶尔创建失败的问题。
那么
问题1:这个失败的情况和JDK版本有关系么,在新版本的jdk下是否还会出现这个问题?
问题2:实际项目中,最常用的是使用哪种方式实现单例模式的呢?
解决方案
- 这个失败的情况和JDK版本有关系么,在新版本的jdk下是否还会出现这个问题?
jdk 5就增强了volidate语义,你现在用的jdk版本基本没问题
- 实际项目中,最常用的是使用哪种方式实现单例模式的呢?
根据《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屋!
查看全文