分享一个volatile实现的双检锁单例模式
Posted 等待戈多儿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分享一个volatile实现的双检锁单例模式相关的知识,希望对你有一定的参考价值。
/**
* DCL(DubleCheckedLock)单例模式
*/
public class Singleton
private volatile static Singleton instance;
public static Singleton getInstance()
if (instance == null) //锁细化
synchronized (Singleton.class)
if (instance == null) //多线程环境下还需要再次判空
instance = new Singleton();
return instance;
volatile关键字的作用是禁止指令重排序优化。
分享一个介于牛A和牛C之间的单例模式,秒杀其他一切单例模式:
public enum EasySingleton
INSTANCE;
通过EasySingleton.INSTANCE访问,线程安全而且还能防止反序列化导致重新创建新的对象。
不禁感叹,Java原来也可以如此优美!
以上是关于分享一个volatile实现的双检锁单例模式的主要内容,如果未能解决你的问题,请参考以下文章
Java 设计模式 -- 单例模式的实现(饿汉式枚举饿汉式懒汉式双检锁懒汉式内部类懒汉式)jdk 中用到单例模式的场景DCL实现单例需用volatile 修饰静态变量
Java 设计模式 -- 单例模式的实现(饿汉式枚举饿汉式懒汉式双检锁懒汉式内部类懒汉式)jdk 中用到单例模式的场景DCL实现单例需用volatile 修饰静态变量