当前位置: 首页 > news >正文

网站程序员dw网页制作软件官网

网站程序员,dw网页制作软件官网,外贸seo,设计工作网站好意图 保证一个类只有一个实例,并提供一个访问它的全局访问点 实现 1 懒汉式,线程不安全 public class Singleton { private static Singleton instance; private Singleton (){} public static Singleton getInstance() { if (instance null) {…

意图

保证一个类只有一个实例,并提供一个访问它的全局访问点

实现

1 懒汉式,线程不安全

public class Singleton {  private static Singleton instance;  private Singleton (){}  public static Singleton getInstance() {  if (instance == null) {  instance = new Singleton();  }  return instance;  }  
}

2 懒汉模式,线程安全

public class Singleton {  private static Singleton instance;  private Singleton (){}  public static synchronized Singleton getInstance() {  if (instance == null) {  instance = new Singleton();  }  return instance;  }  
}

3 饿汉式

public class Singleton {  private static Singleton instance = new Singleton();  private Singleton (){}  public static Singleton getInstance() {  return instance;  }  
}

4 双检锁、双重校验锁(DCL)

优点:安全且在多线程情况下保持高性能。

public class Singleton {  private volatile static Singleton singleton;  private Singleton (){}  public static Singleton getSingleton() {  if (singleton == null) {  synchronized (Singleton.class) {  if (singleton == null) {  singleton = new Singleton();  }  }  }  return singleton;  }  
}

5 登记式、静态内部类

描述:这种方式能达到双检锁方式一样的功效,但实现更简单。对静态域使用延迟初始化,应使用这种方式而不是双检锁方式。这种方式只适用于静态域的情况,双检锁方式可在实例域需要延迟初始化时使用。
这种方式同样利用了 classloader 机制来保证初始化 instance 时只有一个线程,它跟第 3 种方式不同的是:第 3 种方式只要 Singleton 类被装载了,那么 instance 就会被实例化(没有达到 lazy loading 效果),而这种方式是 Singleton 类被装载了,instance 不一定被初始化。因为 SingletonHolder 类没有被主动使用,只有通过显式调用 getInstance 方法时,才会显式装载 SingletonHolder 类,从而实例化 instance。想象一下,如果实例化 instance 很消耗资源,所以想让它延迟加载,另外一方面,又不希望在 Singleton 类加载时就实例化,因为不能确保 Singleton 类还可能在其他的地方被主动使用从而被加载,那么这个时候实例化 instance 显然是不合适的。这个时候,这种方式相比第 3 种方式就显得很合理。

public class Singleton {  private static class SingletonHolder {  private static final Singleton INSTANCE = new Singleton();  }  private Singleton (){}  public static final Singleton getInstance() {  return SingletonHolder.INSTANCE;  }  
}

6 枚举

这种方式是 Effective Java 作者 Josh Bloch 提倡的方式,是实现单例模式的最佳方法。

public class Singleton {private Singleton(){}/*** 枚举类型是线程安全的,并且只会装载一次*/private enum Singleton{INSTANCE;private final Singleton instance;Singleton(){instance = new Singleton();}private Singleton getInstance(){return instance;}}public static Singleton getInstance(){return Singleton.INSTANCE.getInstance();}
}

以上例子引用自:https://www.runoob.com/design-pattern/singleton-pattern.html

http://www.laogonggong.com/news/68523.html

相关文章:

  • 石家庄做网站哪家公司好萍乡网站开发
  • 毕设什么类型网站容易做平面设计上班都干啥
  • 顺德装修网站建设济南市建设局网站查房产信息
  • 做营销推广外包的网站做宣传网站
  • 佛山骏域网站建设专家郑州seo优化外包顾问阿亮
  • 做网站用的大图网站建设与运营课程总结
  • 鹤岗住房和城乡建设局网站气泡做网站上方代码
  • 舟山网站制作重庆企业网站设计维护
  • 法律顾问 网站 源码建设银行忘记密码网站
  • 网站设计 英文企业网站 管理
  • uc酷站中的美图网站html代码怎么变成网页
  • 网站建设哪家好就推 鹏博资讯网站搭建排名优化
  • 网站建设项目管理网站 内容
  • 青岛网站设计网站wordpress 整站源码
  • 免费企业自助建站信息发布网哪个工业园区信息化网站做的好
  • 佛山做网站格wordpress 更新 慢
  • 有没有做3d衣服模型网站网站模版与模板的使用
  • 怎么做福彩网站邯郸购物网站建设
  • 免费模板样机素材网站wordpress手机认证登录页面模板
  • 如何利用网站模板做网站更改wordpress登陆界面
  • 商丘市做网站的公司济南本地网站建设公司
  • 手机网站开发 html5徐州住房与城乡建设部网站
  • 给公司做门户网站多少钱wordpress做一个网站404引导
  • 怎么在百度网站上做自己的网站成都网站代运营
  • 东莞找公司网站网页设计与网站建设全攻略
  • 网站平台怎么建立的红黑网站模板
  • 数码家电商城网站源码wordpress 调用标签
  • 临沂个人做网站东莞最近三天的新闻大事
  • 行业网站 cms专做阀门网站
  • c 新手一个人做网站电子商务有限公司怎么注册