简单的单例模式,在并发环境下会出现多个实例
public class EasySingleton {
//一个静态的实例
private static EasySingleton easySingleton;
//私有化构造函数
private EasySingleton(){
}
//给出一个公共的静态方法返回一个单一实例
public static EasySingleton getInstance(){
if (easySingleton == null) {
easySingleton = new EasySingleton();
}
return easySingleton;
}
}
加锁的单例模式
public class SynchronizedSingleton {
//一个静态的实例
private volatile static SynchronizedSingleton synchronizedSingleton;
//私有化构造函数
private SynchronizedSingleton() {
}
//给出一个公共的静态方法返回一个单一实例
public static SynchronizedSingleton getInstance(){
if (synchronizedSingleton == null) {
synchronized (SynchronizedSingleton.class) {
if (synchronizedSingleton == null){
synchronizedSingleton = new SynchronizedSingleton();
}
}
}
return synchronizedSingleton;
}
}