分享一个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实现的双检锁单例模式的主要内容,如果未能解决你的问题,请参考以下文章