public class Single{
private static Single singleInstance ;
注意1: 构造方法一定要私有的,谁也不能随便创造一个Single
pirvate Single(){
}
public static getSingleInstance (){
if(singleInstance == null) {
singleInstance = newSingle();
}
return singleInstance;
}
注意2: 在多线程情况下, 有可能会导致创建不止一个singleInstance,因为当线程同时进行到if(singleInstance == null) { 都为空,都去创建,
解决方法 :
方法1: public synchronize static getSingleInstance () 让线程同步,这种方法会导致性能损耗
方法2: 在初始化的时候 直接创建singleInstance
private static Single singleInstance =getSingleInstance (); //
方法3:只在第一次的时候同步,double check
public static getSingleInstance (){
if(singleInstance == null) {
synchronize(Single.class){
if(singleInstance == null) {
singleInstance = newSingle();
}
}
returnsingleInstance;
}