1、利用synchronize关键字
public class Singleton {
private static Singleton uniqueInstance;
public static synchronize Singleton getInstance() {
if (uniqueInstance == null) {
uniqueInstance = new Singleton();
}
return uniqueInstance;
}
}
缺点:会降低性能,同步一个方法可能造成程序执行效率下降100倍。
2、迫切的创建实例,哪怕你用不到它,而不是用延迟实例化
public class Singleton {
private static Singleton uniqueInstance = new Singleton();
public static Singleton getInstance() {
return uniqueInstance;
}
}
缺点:对新建一个用不到的对象也无所谓。
3、使用双重加锁(double-checked locking),保证getInstacne()只在第一次会使用同步
public class Singleton {
private volatile static Singleton uniqueInstance;