单例模式

懒汉  调用getInstance方法时实例化
public class Singleton {

	private static Singleton instance;
	
	private Singleton() {}

	public static synchronized Singleton getInstance() {
		if(null == instance) {
			instance = new Singleton();
		}
		return instance;
	}

}


饿汉  类加载时实例化
public class Singleton {

	private static Singleton instance = new Singleton();
	
	private Singleton() {}

	public static Singleton getInstance() {
		return instance;
	}

}


public class Singleton {

	private static Singleton instance;
	
	static {
		instance = new Singleton();
	}
	
	private Singleton() {}

	public static Singleton getInstance() {
		return instance;
	}
	
}


静态内部类  调用getInstance方法时实例化
public class Singleton {

	private static class SingletonHolder {
		private static final Singleton instance = new Singleton();
	}
	
	private Singleton() {}

	public static Singleton getInstance() {
		return SingletonHolder.instance;
	}
	
}


枚举
public enum Singleton {

	instance;
	
	public void fun() {
		//
	}
	
}


双重校验锁
public class Singleton {

	private volatile static Singleton instance;

	private Singleton() {
	}

	public static Singleton getInstance() {
		if(null == instance) {
			synchronized (Singleton.class) {
				if (null == instance) {
					instance = new Singleton();
				}
			}
		}
		return instance;
	}

}


Note:文章转自互联网

你可能感兴趣的