单例模式双重校验解析

时间:2020-03-04 12:44:56   收藏:0   阅读:59

自我检测:

1.代码

2.volatile的作用

3.两个 instance==null 分别的作用

4.synchronized同步代码块内,获取类的三个方法

 

 

 

 

 

 

 

 

 

 

 

 

 

1.代码

  public class Singleton{

    private static volatile Singleton instance;

    private Singleton(){};

    public static Singleton getInstance(){

      if(instance==null){

        synchronized(Singleton.class){

          if(instance==null){

            instance = new Singleton();

          }  

        }

      }

      return instance;

    }

  }

2.volatile的作用

  防止Singleton指令重排序。

3.两个 instance==null 分别的作用

  第一个:防止多个线程创建多个实例

  第二个:防止多个线程同时进入第一个判断,创建第一个实例的线程释放锁后,其他线程获得锁再创建多余实例。

4.synchronized同步代码块内,获取类的方法

  1)Singleton.class  2)instance.getClass  3)Class.forName("类路径的字符串,用‘.‘间隔")

原文:https://www.cnblogs.com/yunqi0886/p/12408337.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!