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

福田欧曼服务站电话潍坊市建设局门户网站

福田欧曼服务站电话,潍坊市建设局门户网站,芒果视频怎样下载到本地,网站导航你一定会回来感谢我的单例模式简介 单例模式#xff08;Singleton Pattern#xff09;是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式#xff0c;创建型模式是一类最常用的设计模式#xff0c;在软件开发中应用非常广泛#xff0c;它提供了一种创建对象的最佳方式。 单例模…单例模式简介 单例模式Singleton Pattern是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式创建型模式是一类最常用的设计模式在软件开发中应用非常广泛它提供了一种创建对象的最佳方式。 单例模式是指在内存中只会创建且仅创建一次对象的设计模式。在程序中多次使用同一个对象且作用相同时为了防止频繁地创建对象使得内存飙升单例模式可以让程序仅在内存中创建一个对象让所有需要调用的地方都共享这一单例对象。这个类提供了一种访问其唯一的对象的方式可以直接访问不需要实例化该类的对象。 单例模式的特点  1、单例类只能有一个实例。  2、单例类必须自己创建自己的唯一实例。  3、单例类必须给所有其他对象提供这一实例。 单例模式有两种类型 懒汉式在真正需要使用对象时才去创建该单例类对象。顾名思义就是实例在用到的时候才去创建“比较懒”用的时候才去检查有没有实例如果有则返饿汉式在类加载时已经创建好该单例对象等待被程序使用。顾名思义就是实例在用到的时候才去创建“比较懒”用的时候才去检查有没有实例如果有则返。顾名思义就是“比较勤”实例在初始化的时候就已经建好了不管你有没有用到都先建好了再说。好处是没有线程安全的问题坏处是浪费内存空间。 实现单例模式的八种方式 饿汉式静态常量 优点在类装载的时候就完成实例化。避免了线程同步问题。 缺点在类装载的时候就完成实例化。实现了单例无法做到延迟加载消耗内存。。 public class Eager{private final static Eager instance new Eager();private Eager() { }public static Eager getInstance( {return instance;} } 饿汉式静态代码块 这种方式和上面的方式其实类似只不过将类实例化的过程放在了静态代码块中也是在类装载的时候就执行静态代码块中的代码初始化类的实例。 优点在类装载的时候就完成实例化。避免了线程同步问题。 缺点在类装载的时候就完成实例化。如果从始至终从未使用过这个实例则会造成内存的浪费。 public class Eager{private static Eager instance;static {instance new Eager() ; } private Eager() { }public static Eager getInstance( {return instance;} }懒汉式线程不安全 这种写法只能在单线程下使用。如果在多线程下一个线程进入了if (eager null)判断语句块还未来得及往下执行另一个线程也通过了这个判断语句这时便会产生多个实例。所以在多线程环境下不可使用这种方式。 public class Lazy{private static Lazy lazy;private Lazy() { }public static Lazy getInstance(){if (lazy null) {lazy new Lazy() ;}return lazy;} }懒汉式线程安全同步方法 缺点效率太低了每个线程在想获得类的实例时候执行getInstance()方法都要进行同步。 public class Lazy{private static Lazy lazy;private Lazy() { }public static synchronized Lazy getInstance() {if(lazy null) {lazy new Lazy() ;}return lazy;} }懒汉式线程安全同步代码块 这种同步并不能起到线程同步的作用。跟第3种实现方式遇到的情形一致假如一个线程进入了if (eager null)判断语句块还未来得及往下执行另一个线程也通过了这个判断语句这时便会产生多个实例。 public class Lazy{private static Lazy lazy;private Lazy() { }public static Lazy getInstance() {if (lazy null) {synchronized (Lazy.class) {lazy new Lazy() ;}}return lazy;} }双重检查【推荐使用】 Double-Check概念对于多线程开发者来说不会陌生如代码中所示我们进行了两次if (singleton null)检查这样就可以保证线程安全了。这样实例化代码只用执行一次后面再次访问时判断if (singleton null)直接return实例化对象。 优点线程安全延迟加载效率较高。 public class DoubleCheck{private static volatile DoubleCheck doublecheck ;private DoubleCheck() {}public static DoubleCheck getInstance() {if (doublecheck null) {synchronized (DoubleCheck .class) {if (doublecheck null) {doublecheck new DoubleCheck () ;}}}return doublecheck;} }总结 单例模式有两种懒汉式、饿汉式懒汉式在需要用到对象时才实例化对象解决了并发安全和性能低下问题饿汉式在类加载时已经创建好该单例对象在获取单例对象时直接返回对象即可不会存在并发安全和性能问题。在开发中如果对内存要求非常高那么使用懒汉式写法可以在特定时候才创建该对象如果对内存要求不高使用饿汉式写法因为简单不易出错且没有任何并发安全和性能问题为了防止多线程环境下因为指令重排序导致变量报NPE需要在单例对象上添加volatile关键字防止指令重排序
http://www.w-s-a.com/news/960511/

相关文章:

  • 如何做网站不被查网站开发工程师岗位说明书
  • 做网站需要vps吗网站建设后怎样发信息
  • 网站建立风格二手交易网站开发可参考文献
  • 成都微信网站开发优化大师优化项目有哪些
  • 哪个网站做自考题目免费郑州网站建设公司qq
  • 地方性的网站有前途顺的网络做网站好不好
  • 学校申请建设网站的原因不要网站域名
  • 推荐响应式网站建设子域名查询工具
  • 如何建设学校的微网站广告推广是什么
  • 设计类专业哪个就业前景好网站建设seoppt
  • 济南建站公司网站网站友链查询源码
  • 校园失物招领网站建设涪陵网站建设公司
  • 怎么做盗号网站手机网站建设需要租用什么科目
  • 成品网站是什么意思沈阳seo推广
  • 购物网站后台流程图昆明官网seo技术
  • 创建自己网站全网零售管理系统
  • 江苏省建设厅网站建筑电工证wordpress收费插件大全
  • 北京中国建设银行招聘信息网站宁德蕉城住房和城乡建设部网站
  • 泉州做网站优化哪家好wordpress站点预览
  • 创建门户网站一页网站首页图如何做
  • 服装手机商城网站建设sns社交网站有哪些
  • 无锡工程建设招标网站怎么自己建设公司网站
  • 哪个网站可以学做咸菜安卓软件开发需要学什么软件
  • 自有网站建设的团队遂宁市建设局网站
  • 网站建设哪个好一些网站内容导出
  • 什么网站的页面做的比较好看网上做平面设计的网站
  • 网站建设单选网站建设学校培训学校
  • 可以做app的网站logo设计在线生成免费标小智
  • 网站变更备案做酒类网站
  • 网站必须要备案吗东莞市非凡网站建设