我是靠谱客的博主 柔弱百褶裙,最近开发中收集的这篇文章主要介绍java的双重检查锁问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

通过双重检查锁(double-checked locking)(在并发场景下实现延迟初始化的优化 问题隐患(可参考 The "Double-Checked Locking is Broken" Declaration),推荐解决方案中较为 简单一种(适用于 JDK5 及以上版本,将目标属性声明为 volatile 型(比如修改 helper 的属 性声明为`private volatile Helper helper = null;`)。

正例:

public class Singleton {
   private static Singleton instance = null;
   private Singleton() {}
 
   public static Singleton getInstance() {
   if (instance == null){
     synchronized(Singleton.class){
       if (instance == null)
         instance = new Singleton();
     }
   }
   return instance;
   }
}

反例:
public class LazyInitDemo {
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的双重检查锁问题的全部内容,希望文章能够帮你解决java的双重检查锁问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部