/**
* @ClassName EagerSingleton
* @Descrcription 饿汉式(多线程安全,基于classloader机制避免多线程问题)
*/
public class EagerSingleton {
private static EagerSingleton instance = new EagerSingleton();
private EagerSingleton(){}
public static EagerSingleton getInstance() {
return instance;
}
}
2、明确实现 lazy loading 效果:使用登记式单例
package designPatterns.SingletonPattern;
/**
* @ClassName RegistrationSingleton
* @Descrcription 登记式单例(多线程安全,能达到和双重锁机制一样的效果且实现更简单,但是此方法只适用于静态域的情况)
*/
public class RegistrationSingleton {
public static class RegistrationSingletonHolder {
private static final RegistrationSingleton INSTANCE = new RegistrationSingleton();
}
private RegistrationSingleton(){}
public static final RegistrationSingleton getInstance() {
return RegistrationSingletonHolder.INSTANCE;
}
}