单例化有两种方式:饿汉式和懒汉式
饿汉式:先初始化对象 ,A类一进入内存便建立一个对象
class A {
private A(){}
private static A s = new A();
public static A getInstance(){
return s;
}
}
懒汉式:对象是方法调用时,才初始化:
class A {
private static A s = null;
private A(){}
public static A getInstance(){
if(s==null)
s = new A();
return s;
}
}
补充(多线程部分内容):
单例模式就是为了使用这个对象,那么一般使用饿汉式,且安全。
单例设计模式中懒汉式:延迟加载。 在多线程访问是会出现问题,会出现效率低下。使用双重否定来解决(减少锁的判断次数)。
synchronized 同步。懒汉式加入以后比较慢。
if(s == null){
synchronized(A.class){
if(s == null)
{
s = new A();
}
}
}