昆明java培训
达内昆明广州春城路

18487146383

热门课程

双重检验锁

  • 时间:2016-08-31
  • 发布:昆明Java培训
  • 来源:达内新闻

昆明Java培训班的老师知道,双重检验锁模式(double checked locking pattern),是一种使用同步块加锁的方法。程序员称其为双重检查锁,因为会有两次检查instance == null,一次是在同步块外,一次是在同步块内。为什么在同步块内还要再检验一次?因为可能会有多个线程一起进入同步块外的if,如果在同步块内不进行二次检验的话就会生成多个实例了。

public static Singleton getSingleton() {

if (instance == null) {                        //Single Checked

synchronized (Singleton.class) {

if (instance == null) {                //Double Checked

instance = new Singleton();

}

}

}

return instance ;

}

这段代码看起来很完美,很可惜,它是有问题。主要在于instance = new Singleton()这句,这并非是一个原子操作,事实上在JVM中这句话大概做了3件事情。

学Java开发就到昆明达内Java培训班!了解详情请登陆昆明达内Java培训官网(km.Java.tedu.cn)!

上一篇:懒汉式,线程安全
下一篇:给instance分配内存

程序猿必学之Java 9——昆明达内

java集合-Iterator迭代

达内编程培训大神带你修炼技术!

AI初创企谷歌跑在前面了!达内java培训

选择城市和中心
贵州省

广西省

海南省