架构杂谈

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
public class Singleton {

	private static volatile Singleton singleton = null;//volatile阻止JVM对指令执行顺序的优化,防止乱序执行导致导致返回的实例为半成品

	private void Singleton() {}

	public static Singleton getInstance() {
		if (singleton == null) {
			synchronized (Singleton.class) {
				if (singleton == null) {//双重检查,如果第二个线程进入不做检查会产生不同的实例
					singleton = new Singleton();
				}
			}
		}
		return singleton;
	}

	public static void main(String[] args) {
		System.out.println(Singleton.getInstance() == Singleton.getInstance());
	}
}

  

posted on 2014-03-20 17:04  架构杂谈  阅读(170)  评论(0编辑  收藏  举报