/**
* 饿汉式
* 线程安全
* 调用效率高
* 不能延迟加载
* 空间换时间
*/
class MySingleton {
private MySingleton() {
}
private static MySingleton instance = new MySingleton();
public static MySingleton getInstance() {
return instance;
}
}
/**
* 懒汉式
* 线程安全
* 调用效率不高
* 但能延迟加载
* 时间换空间
*/
class MySingleton2 {
// 私有构造器
private MySingleton2() {
}
//类初始化时,不初始化这个对象(延迟加载)
private volatile static MySingleton2 instance = null;
//方法同步调用效率低
public static synchronized MySingleton2 getInstance() {
//双重检验锁,判断两次
if (instance == null) {
synchronized (MySingleton2){
if (instance == null) {
instance = new MySingleton2();
}
}
}
return instance;
}
}
// 内部类单例
class Singleton {
private Singleton() {
System.out.println("构造执行了");
}
public static Singleton getInstance() {
return SingletonHandler.Instance;
}
private static class SingletonHandler {
private static Singleton Instance = new Singleton();
}
}
单例模式
最新推荐文章于 2024-09-29 16:57:51 发布