首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

求问一段代码的含意

2013-03-17 
求问一段代码的含义今天看到这样一段代码不知其含义,小弟才疏学浅,不明其意,求大虾们指点public class Map

求问一段代码的含义
今天看到这样一段代码不知其含义,小弟才疏学浅,不明其意,求大虾们指点


public class MapperInstances {


private static MapperInstances instance;

private MapperInstances() {}

public static MapperInstances getInstance() {
if(instance == null) {
instance = new MapperInstances();
}

return instance;
}
}


调用的语句为

weka.core.Instances in = MapperInstances.getInstance().mapToWeka(data);


不知道为什么在class MapperInstances 类里还要设置 private static MapperInstances 的成员变量,这个变量有什么用

谢谢大家 java
[解决办法]
楼上都说了是单例。顾名思义就是这个类只能生成一个实例!
http://blog.csdn.net/huxiweng/article/details/8140338


第一种:
 



[java] view plaincopyprint?
01.public class Singleton2 {  
02.      
03.    private Singleton2(){  
04.        System.out.println("This is Singleton2's instance.");  
05.    };  
06.      
07.    private static Singleton2 instance = null;  
08.      
09.    public static Singleton2 getInstance(){  
10.        if(instance == null) {  
11.            instance = new Singleton2();  
12.        }  
13.        return instance;  
14.    }  
15.}  

 这种情况未加锁,可能会产生数据错误,比如两个同时新生成的对象,一个把对象数据改变了,而另一个使用的没改变之前的。
 
第二种:
 



[java] view plaincopyprint?
01.public class Singleton1 {  
02.      
03.    private Singleton1(){  
04.        System.out.println("This is Singleton1's instance.");  
05.    }  
06.      
07.    private static Singleton1 instance = null;  
08.  
09.    public static Singleton1 getInstance2() {  
10.        if(instance == null){   //1  
11.            synchronized (Singleton1.class) {  //2  
12.                if(instance == null) {  
13.                    instance = new Singleton1();  
14.                }  
15.            }  
16.        }  


17.        return instance;  
18.    }  
19.      
20.}  

 这种只会在第一次的时候产生阻塞,之后每实例一次对象,就会在第1步时跳过去,在第一次实例的时候,会在第2步那里产生阻塞,以后就不会了,这种相对来说是最好的。
 
第三种:
 



[java] view plaincopyprint?
01.public class Singleton1 {  
02.      
03.    private Singleton1(){  
04.        System.out.println("This is Singleton1's instance.");  
05.    }  
06.      
07.    private static Singleton1 instance = null;  
08.      
09.    public static synchronized Singleton1 getInstance(){  //1  
10.          
11.        if(instance == null){  
12.            instance = new Singleton1();  
13.        }  
14.        return instance;  
15.    }  
16.}  

 多线程的时候每次都会在1这里产生阻塞。
求问一段代码的含意

热点排行