关于Java单例模式中双重校验锁的实现目的及原理

2019-09-04 07:15:49来源:博客园 阅读 ()

关于Java单例模式中双重校验锁的实现目的及原理

开始复习设计模式,一开始理解单例模式中的双重校验锁卡住了,想通了后就自己做了段思维导图来帮助自己理解。

其实理解下来并不难,但还是记录下来帮助自己回忆和借机试试养成写博客的习惯~

public class Singleton {

    private volatile static Singleton uniqueInstance;

    private Singleton() {
    }

    public static Singleton getUniqueInstance() {
        if (uniqueInstance == null) {
            synchronized (Singleton.class) {
                if (uniqueInstance == null) {
                    uniqueInstance = new Singleton();
                }
            }
        }
        return uniqueInstance;
    }
}

  这是懒汉模式下双重校验锁下的简单代码

public class Singleton {

    private volatile static Singleton uniqueInstance;

    private Singleton() {
    }

    public static Singleton getUniqueInstance() {
        if (uniqueInstance == null) {
            synchronized (Singleton.class) {
                
                    uniqueInstance = new Singleton();
                
            }
        }
        return uniqueInstance;
    }
}

  懒汉模式下非双重校验锁下的简单代码

 

  差别在于第二个if判断能拦截第一个获得对象锁线程以外的线程。

 

  笔者顺便做了张思维导图截图,模板可能选得不好,还是要多练练哈。

  

 


原文链接:https://www.cnblogs.com/ALego/p/11448563.html
如有疑问请与原作者联系

标签:AVQ对象实现理解原理

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:JVM参数配置&&命令工具

下一篇:redis持久化