/**
* 单例
* 饿汉式(立即加载)
*/
public class HungrySingleton {
// 构造方法私有化
private HungrySingleton() {}
// 将自身实例化对象设置为一个属性,并用static、final修饰 这个类会被整个jvm加载的时候实例化
private static final HungrySingleton instance = new HungrySingleton();
// 静态方法返回该实例
public static HungrySingleton getInstance() {
// 拿到全局唯一一个对象
return instance;
}
}
懒汉式
public class LazySingleton {
// 将自身实例化对象设置为一个属性,并用static修饰
private static LazySingleton instance;
// 构造方法私有化
private LazySingleton() {}
// 静态方法返回该实例,加synchronized关键字实现同步
// 存在线程安全问题 ,如果 不加synchronized关键字实现同步会出现问题
public static synchronized LazySingleton getInstance() {
if(instance == null) {
instance = new LazySingleton();
}
return instance;
}
}