单例模式(Singleton):保证一个类仅有一个实例,并提供一个访问它的全局访问点
先初始化对象
Single类一进内存就已经建立了对象
class Single {
private Single() {}
private static Single s = new Single();
public static Single getInstance() {
return s;
}
}
public class SingleDemo {
public static void main(String[] args) {
Single s = Single.getInstance();
}
}
对象是方法被调用时,才初始化,也叫做对象的延时加载
Single类进内存,对象还没有存在,只有调用了getInstance方法时,才建立对象。
//注意这里多线程问题
class Single {
private Single() {}
private static Single s = null;
public static Single getInstance() {
if(s==null) {
synchronized (Single.class) {
if(s==null)
s = new Single();
}
}
return s;
}
}
解决了线程不安全的问题。
效率有点低,每次调用实例都要判断同步锁