/**
* 单件模式:确保一个类只有一个实例,并提供一个全局访问点。
* @下午10:01:58
* @author ASUS
*/
public class Singleton {
/**
* 静态成员变量
* 利用 双重检验加锁 volatile 首先检查是否已经创建 如果尚未创建 才进行同步 这样一来 只有第一次会同步
*/
private volatile static Singleton uniqueInstance=new Singleton();
/**
* 构造方法声明为 隐私类型的 在其他类 无法实例化类
*/
private Singleton(){}
/**
* 静态方法 类名调用
* 但在多线程中 不能确保只生成一个对象
* 1.同步方法 可以在方法前面加上synchronized 但是却影响性能
* 2.急切 实例化 静态成员变量直接实例化对象
* 3.利用双重检验加锁 例如当前所做的 在静态成员变量前
* @return该类的一个对象
*/
public static Singleton getInstance(){
if(uniqueInstance==null){
synchronized (Singleton.class) {
if(uniqueInstance==null){
uniqueInstance= new Singleton();
}
}
}
return uniqueInstance;
}
}