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

网站开发读什么专业新媒体运营培训学校

网站开发读什么专业,新媒体运营培训学校,家装设计学校,企业门户网站建设意图 保证一个类只有一个实例,并提供一个访问它的全局访问点 实现 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.zhongyajixie.com/news/31194.html

相关文章:

  • pc网站和移动网站站长工具精品
  • 要建立网站怎么建立域名停靠浏览器
  • 商业网站设计欣赏推广百度百科
  • 哪些行业网站推广做的多杭州seook优屏网络
  • 保定模板建站平台优化大师官方免费下载
  • 成都哪家做网站比较好百度热搜榜排名
  • 兰州建设一个网站多少钱网站排名英文
  • 查看网站建设工作网络营销的几种模式
  • 找做网站的客户个人推广网站
  • 武汉网站建站公司黄页网站推广服务
  • 网站 界面改版今天的新闻发布会
  • 网站关停公告怎么做做一个个人网站
  • 什么网站做一件代发今日重要新闻
  • 深圳优美网络科技有限公司seo公司怎么推广宣传
  • 网站首页布局设计seo学院培训班
  • vps利用端口做不同网站免费百度广告怎么投放
  • mac做网站软件免费制作网站的软件
  • 男女做暧网站百度竞价优化软件
  • 苹果网站bt磁力种子搜索引擎
  • 网站开发路径国内免费域名注册网站
  • 建设部办公厅网站太原首页推广
  • 成都网站设计建设软件开发需要多少资金
  • 北京网站搭建多少钱青岛官网优化
  • 自己的免费网站空间家电企业网站推广方案
  • 网站域名多少钱一年企业seo如何优化
  • 河北智能网站建设全专业优化公司
  • ps做网站主页图片数据分析师证书
  • 电商建站网络营销解释
  • 做网站挣钱么网站seo查询
  • 网站建设教程搭建湖南岚鸿百度搜索引擎广告