单例模式
意思就是只能创建一个对象。这样做的好处是确保所有的引用访问的都是同一个内存空间并且节约了系统资源。但是在多线程中要小心使用。若一个用户获得该对象并对成员变量进行操作,下一个用户进来操作同一快内存,若有所操作,上一个用户还没操作完,容易发生错误。可以对该变量加互斥锁,但是这样效率会很低。推荐使用threadLocal
饿汉式:很着急初始化,类加载时就创建对象。
public class Test {
private Test(){
}
public static Test test = new Test();
public Test getInstance(){
return test;
}
}
好处:类加载时就创建好静态的对象,调用速度快,并且线程安全。
缺点:资源效率不高,方法可能不会被调用到,但对象已经创建好了。
懒汉式:不着急初始化。
public class Test {
private Test(){
}
public static Test instance = null;
public static Test getInstance(){
if(instance==null){
instance = new Test();
}
return instance;
}
}
好处:系统资源利用率高,不调用方法就不会实例化
阙短:多线程下,容易创建多个对象。