标签:初始化 class 单利 nbsp 方式 zed 线程 private singleton
单例模式
使用单例模式Singleton(1)
public class Singleton {
private Singleton(){}
//在自己内部定义自己一个实例,注意这是private
//预加载
private static Singleton instance = new Singleton();
//这里提供了一个供外部访问本class的静态方法,
//可以直接访问 public static Singleton getInstance() { return instance; }
}
使用单例模式Singleton(2)
public class Singleton {
//延迟加载
private static Singleton instance = null;
private Singleton (){}
public static synchronized Singleton getInstance() { //这个方法比上面有所改进,不用每次都进行生成
//对象,只是第一次使用时生成实例,提高了效率!
if (instance==null)
instance=new Singleton();
return instance; }
}
这种方式在多线程的情况下,由于每次获取实例的时候都要对getInstance()方法加锁,获取锁才能运行,效率会受影响。
使用单例模式Singleton(3)
双锁机制:
public class Singleton {
private static Singleton instance = null;
private Singleton (){}
public static Singleton getInstance(){
if (instance==null){
synchronized(Singleton.class) {
if (instance == null) {
instance = new Singleton();
} }
return instance;
}
}这种方式只是在初始化Singleton那部分代码的时候添加同步锁,这样提高了效率。
标签:初始化 class 单利 nbsp 方式 zed 线程 private singleton
原文地址:http://www.cnblogs.com/fengshaolingyun/p/6785079.html