单利模式

单例模式
使用单例模式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那部分代码的时候添加同步锁,这样提高了效率。

posted @ 2017-04-29 14:01  风少凌云  阅读(101)  评论(0编辑  收藏  举报