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

淘宝建站服务热点新闻头条

淘宝建站服务,热点新闻头条,使用c#语言建设网站优点,wordpress网站排行一、概念 单例设计模式#xff08;Singleton Design Pattern#xff09;#xff1a;一个类只允许创建一个对象#xff08;或者实例#xff09;#xff0c;那这个类就是一个单例类。 优点#xff1a;在内存里只有一个实例#xff0c;减少了内存的开销#xff0c;避免…一、概念 单例设计模式Singleton Design Pattern一个类只允许创建一个对象或者实例那这个类就是一个单例类。 优点在内存里只有一个实例减少了内存的开销避免一个全局使用的类频繁地创建与销毁。 缺点没有接口不能继承与开闭职原则冲突。 使用场景有些数据在系统中只应该保存一份就比较适合设计为单例类。比如系统的配置信息类。除此之外我们还可以使用单例解决资源访问冲突的问题。 二、实现 1、步骤 构造方法定义为私有方法。定义一个私有的类静态实例。提供一个公有的获取实例的静态方法。 2、实现方式 饿汉模式 public class HungryModeSingleton {private static final HungryModeSingleton mInstance new HungryModeSingleton();private HungryModeSingleton() {}public static HungryModeSingleton getInstance() {return mInstance;} }总结在类加载的时候就对实例进行初始化没有线程安全问题获取实例的静态方法没有使用同步调用效率高但是没有使用懒加载如果该实例从始至终都没被使用过则会造成内存浪费。 懒汉模式 public class LazyModeSingleton {private static LazyModeSingleton mInstance;private LazyModeSingleton () {}public static synchronized LazyModeSingleton getInstance() {if (mInstance null){mInstance new LazyModeSingleton();}return mInstance;} }总结上面是线程安全的懒汉模式在第一次使用的时候才进行初始化达到了懒加载的效果但是这种写法每次获取实例都要进行同步加锁因此在频繁获取对象的时候效率较低。 双检锁/双重校验锁DCL即 double-checked locking public class DCLModeSingleton {private static volatile DCLModeSingleton mInstance;private DCLModeSingleton () {}public static synchronized DCLModeSingleton getInstance() {if (mInstance null){synchronized (DCLModeSingleton.class){if (mInstance null){mInstance new DCLModeSingleton();}}} return mInstance; } } 总结双重校验锁方式在第一次使用的时候才进行初始化达到了懒加载的效果。并且只有第一次进行初始化才进行同步因此不会有效率方面的问题。 在上面的例子中DCLModeSingleton的实例使用了volatile关键字进行修饰主要是为了解决在一些JDK低版本上有指令重排的问题。 指令重排问题当线程A执行到9行的时候线程B执行到6行CPU在进行对象创建的时候内部会在保证不影响最终结果的前提下对指令进行重新排序不影响最终结果只是针对单线程。例如 创建对象步骤分配空间- 初始化对象 -设置mInstance指向。 指令重排后分配空间- 设置mInstance指向 -初始化对象 此时线程B执行到第6行发现mInstance不为空但是对象并没有初始化完成会出现问题但是概率较低。 使用volatile修饰符可以禁止指令重排防止出现该问题。 静态内部类 public class StaticModeSingleton {private StaticModeSingleton () {}private static class SingletonHolder{private static final StaticModeSingleton INSTANCE new StaticModeSingleton();}public static StaticModeSingleton getInstance() {return SingletonHolder.INSTANCE;} }总结SingletonHolder 是一个静态内部类当外部类StaticModeSingleton被加载的时候并不会创建 SingletonHolder 实例对象。只有当调用 getInstance() 方法时SingletonHolder 才会被加载这个时候才会创建instance。instance 的唯一性、创建过程的线程安全性都由 JVM 来保证。所以这种实现方法既保证了线程安全又能做到延迟加载。 枚举 public enum Singleton {INSTANCE;//添加自己需要的操作public void doSomeThing() {} }总结非懒加载线程安全可以避免反序列化重新创建对象。 3、实现方式优缺点对比 三、应用场景 网站计数器。应用程序的日志应用。Web项目中的配置对象的读取。数据库连接池。多线程池。 单例模式详解
http://www.hkea.cn/news/14434281/

相关文章:

  • 爱站网关键字查询上海做网站服务商
  • 网站建设php培训权威解读当前经济热点问题
  • 太原php网站开发如何查看网站的更新频率
  • 网站备案是什么网站开发面试自我介绍
  • 体育网站建设方案小程序链接wordpress
  • php做购物网站的弊端馆陶网站推广
  • 哪些行业需要网站有哪些内容thinkphp可以做网站吗
  • 门户网站首页设计兖州市做网站
  • 满山红厦门网站建设企业网站建设教程 pdf
  • 360免费建站连接百度 营销推广怎么收费
  • 移动网站建设是什么优酷视频网站源码
  • 违反建设投诉网站举报物流网站开发策划
  • 地图网站模板网站主页和子页风格如何统一
  • 美食网站建设的重要性怎么做网站外链
  • 孝感织云网站建设实搜石家庄网站建设小程序
  • 云南城市建设职业学院成绩查询网站网页设计代码是怎么加链接
  • 黑龙江做网站公司广州网站建设设计哪家好
  • 国外创意海报设计网站大连网站建设方案案例
  • 红酒公司网站建设模板6841wordpress 当前用户所有评论
  • flash开发网站注册一个公司需要花多少钱
  • 网站站欣赏程序员培训机构出来找工作好找吗
  • 建设淘宝网站的人员组织网站建设怎么办
  • 湖南营销型网站备案审核网站显示500
  • 南京网站seo优设网app安卓下载
  • 合肥网站建设高端外国网页设计免费模板
  • 上海定制网站开发wordpress信息
  • 移动网站开发 公众号技术支持 盈岚网站建设
  • 网站空间20g大型网站建设济南兴田德润o团队怎么样
  • 广州哪家网站建设好做网站建设跑业务
  • 图片展示网站建设怎么做网站扩展