一:单例
public class SingleObject { private static SingleObject instance; public SingleObject(){} public static SingleObject getInstance(){ if(instance == null){ instance = new SingleObject(); } return instance; } } //缺点,在多线程状态下,多个线程同时调用getInstance()会产生多个对象,不推荐 public class SingleObject { private static SingleObject instance; public SingleObject(){} public static synchronized SingleObject getInstance(){ if(instance == null){ instance = new SingleObject(); } return instance; } } //在getInstances()加上锁就可以了,但是只有第一次西药new 对象,锁有性能损耗。 public class SingleObject { private static SingleObject instance = new SingleObject(); public SingleObject(){} public static SingleObject getInstance(){ return instance; } } //这种方式还是比较好的 public class SingleObject { private volatile static SingleObject instance; public SingleObject(){} public static SingleObject getInstance(){ if(instance == null){ synchronized (SingleObject.class){ if(instance == null){ instance = new SingleObject(); } } } return instance; } } //双重检查也是可以的