码上敲享录 > java面试题及答案大全 > 请写出多线程安全单例模式

请写出多线程安全单例模式

上一章章节目录下一章 2019-07-27已有1852人阅读 评论(0)

请写出多线程安全单例模式


答:

1.第一种最优方法

public class Singleton{

       private static class SingletonHolder {

           public final static Singleton instance = new Singleton();

       }

       public static Singleton getInstance() {

           return SingletonHolder.instance;

       }

   }


2第二种方法,双重检查锁(Double-Checked Lock)

public class doubleCheck{

  private volatile  static Instance instance;

  public static Instance getInstance(){

    if(instance==null){ //1

       synchronized (doubleCheck.class){

         if(instance==null){

           instance = new Instance();

         }

       }

   return instance;

 }

}


补充:

这是新提出一种新的模式——Initialization on Demand Holder. 这种方法使用内部类来做到延迟加载对象,在初始化这个内部类的时候,JLS(Java Language Sepcification)会保证这个类的线程安全,完全使用了Java虚拟机的机制进行同步保证,没有一个同步的关键字Synchronized,提高了效率。

0

有建议,请留言!

  • *您的姓名:

  • *所在城市:

  • *您的联系电话:

    *您的QQ:

  • 咨询问题:

  • 提 交