码迷,mamicode.com
首页 > 其他好文 > 详细

单利模式

时间:2017-04-29 14:22:37      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:初始化   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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!