美文网首页
笔试经常写的单例模式总结

笔试经常写的单例模式总结

作者: Random_Faith | 来源:发表于2017-12-01 15:18 被阅读0次

主要有三个版本,第三个版本是最优答案。
volatile关键字不但可以防止指令重排,也可以保证线程访问的变量值是主内存中的最新值。

第一版 线程不安全

public class Singleton {
    private Singleton() {}  //私有构造函数
    private static Singleton instance = null;  //单例对象
    //静态工厂方法
    public static Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}

第二版 有漏洞

public class Singleton {
    private Singleton() {}  //私有构造函数
   private static Singleton instance = null;  //单例对象
   //静态工厂方法
   public static Singleton getInstance() {
        if (instance == null) {      //双重检测机制
         synchronized (Singleton.class){  //同步锁
           if (instance == null) {     //双重检测机制
             instance = new Singleton();
               }
            }
         }
        return instance;
    }
}

第三版 最优解

public class Singleton {
    private Singleton() {}  //私有构造函数
   private volatile static Singleton instance = null;  //单例对象
   //静态工厂方法
   public static Singleton getInstance() {
       if (instance == null) {      //双重检测机制
       synchronized (this){  //同步锁
         if (instance == null) {     //双重检测机制
           instance = new Singleton();
             }
          }
       }
       return instance;
    }
}

相关文章

  • 笔试经常写的单例模式总结

    主要有三个版本,第三个版本是最优答案。volatile关键字不但可以防止指令重排,也可以保证线程访问的变量值是主内...

  • 单例模式的六种创建方式

    在使用java编码的过程中经常会去写单例模式,今天总结一下6种常见单例写法. 饿汉模式 评价:这种模式直接在类初始...

  • iOS 单例模式 or NSUserDefaults

    本文内容:iOS的单例模式NSUserDefaults的使用总结:iOS单例模式 and NSUserDefaul...

  • 单例模式

    懒汉单例 饿汉模式 总结

  • 【本人秃顶程序员】Java几种方式实现单例模式之经验总结

    ←←←←←←←←←←←← 快,点关注! 最近总结了几种单例模式的实现,做个小总结给大家分享一下。 1、 单例模式,...

  • 单例模式

    单例设计模式是几种设计模式中比较容易理解的,手写单例模式也是面试频繁问到的。下面总结一下单例模式的几种写法: //...

  • Android 丨 单例模式

    面试过程中,单例模式总是会被问及,所以抽时间总结了一份单例相关的笔记 单例概念 单例模式是一种对象的创建模式,它用...

  • Java编程——单例模式的安全性

    单例模式,我想大家再熟悉不过了,不过本文不是介绍单例模式该怎么写的。 本文来说说怎么破坏一个单例,让你写的单例变成...

  • 单例模式 Singleton Pattern

    单例模式-菜鸟教程 iOS中的设计模式——单例(Singleton) iOS-单例模式写一次就够了 如何正确地写出...

  • Java多线程--并行模式与算法

    Java多线程--并行模式与算法 单例模式 虽然单例模式和并行没有直接关系,但是我们经常会在多线程中使用到单例。单...

网友评论

      本文标题:笔试经常写的单例模式总结

      本文链接:https://www.haomeiwen.com/subject/iklwbxtx.html