双锁模式 synchronize
public class Singleton{
volatile private static Singleton instance= null;
private Singleton() {}
public static Singleton getSingleton () {
if (instance!= null) {
} else {
synchronized(Singleton.class) {
if (instance == null) {
instance= new Singleton();
}
}
}
return instance;
}
}
饿汉模式
public class HungrySigleton {
private HungrySigleton(){}
private static HungrySigleton instance = new HungrySigleton();
public static HungrySigleton getInstance() {
return this.instance;
}
}
优点:不加锁、线程绝对安全
缺点: 不管用没有都会实例化,可能会造成内存泄漏