欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

双重检测锁实现单例模式

程序员文章站 2022-07-14 09:52:06
...
package com.hnjd.singleton;

/**
 *  双重检测锁实现单例模式
 * 
 * @author 10912
 *
 */
public class SingletonDemo03 {

	private static SingletonDemo03 singleton = null;

	private SingletonDemo03() {
	}

	public static SingletonDemo03 getInstance() {
		if (singleton == null) {
			SingletonDemo03 sl;
			synchronized (SingletonDemo03.class) {
				sl = singleton;
				if (sl == null) {
					synchronized (SingletonDemo03.class) {
						if (sl == null) {
							sl = new SingletonDemo03();
						}
					}
				}
			}
		}
		return singleton;
	}
}

问题:由于编译器优化原因和JVM底层内部模型原因,偶尔会出问题不建议使用。