首页 > 其他 > 详细

单例模式双重校验解析

时间:2020-03-04 12:44:56      阅读:58      评论:0      收藏:0      [点我收藏+]

自我检测:

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)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!