单例就是该类只能返回一个实例。
单例所具备的特点:
1.私有化的构造函数
2.私有的静态的全局变量
3.公有的静态的方法
一般常见到的是3种:
饿汉式(线程不安全):
public class Singleton1 {
private Singleton1() {};
private static Singleton1 single = new Singleton1();//因为饿汉嘛,饿了所以先直接吃,直接先new了再说
public static Singleton1 getInstance() {
return single;
}
}
懒汉式(线程不安全):
public class Singleton2 {
private Singleton2() {}
private static Singleton2 single=null;//因为懒汉嘛,所以什么时候饿了什么时候再吃
public tatic Singleton2 getInstance() {
if (single == null) {
single = new Singleton2();
}
return single;
}
}
最有效的是双层锁式的方法内容如下(线程安全):
public class Singleton3 {
private Singleton3() {}
private static Singleton3 single ;
public static Singleton3 getInstance() {
if(null == single){
synchronized(single ){
if(null == single){
single = new Singleton3();
}
}
}
return single;
}
}
更加详细的有7种,而且描述也较为准确下面也是我的一篇博客,想看的可以打开看一下。
http://blog.csdn.net/dianzijinglin/article/details/50898769