1. 懒汉模式
优点:延迟加载
缺点:会产生多线程同步吧
public class Singleton {
private static Singleton instance = null;
private Singleton() {
}
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
会产生多线程问题吧?改造如下:
public class Singleton {
private static Singleton instance = null;
private Singleton() {
}
public static synchronized Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
对整个方法都加锁,太重了。实际只在第一次调用才需要加锁, 如何改?
TODO
2. 饿汉模式
优点:不会出现多线程同步问题?
缺点:对整个方法使用同步,会产生性能问题
public class Singleton {
private static Singleton instance = new Singleton();
private Singleton() {
}
public static Singleton getInstance() {
return instance;
}
}