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

北京建设工程交易中心网公众号关键词排名优化

北京建设工程交易中心网,公众号关键词排名优化,免费seo搜索优化,465端口 WordPress单例模式是设计模式之一,能保证某个类在程序中只存在唯一一份实例,而不会创建出多个实例 单例模式的具体实现方法有很多,最常见的是 “饿汉” 和 “懒汉” 两种。 饿汉模式 class Singlenton{private static Singlenton instance new Sin…

单例模式是设计模式之一,能保证某个类在程序中只存在唯一一份实例,而不会创建出多个实例

单例模式的具体实现方法有很多,最常见的是 “饿汉”“懒汉” 两种。

饿汉模式

class Singlenton{private static Singlenton instance = new Singlenton();public static Singlenton getInstance(){return instance;}//在此类的外面无法调用构造方法,无法创建实例private Singlenton(){}
}

懒汉模式

类加载的时候不创建实例,第一次使用的时候才创建实例

单线程版

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

多线程版

相比单线程版,多线程版考虑了线程安全问题

线程安全问题发生在首次创建实例时,可能多个线程同时调用getInstance方法,就可能导致创建了多个实例。

加上 synchronized 可以改善线程安全问题

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

多线程版优化

上面的代码虽然说解决了线程安全问题,但是只要调用了getInstance方法,就会触发加锁操作,产生阻塞,影响性能。

我们想要优化,就要在加锁之前判定一下是否需要加锁。

外层的if(instance==null)是判断实例有没有创建

内层的if(instance==null)进一步判断实例有没有创建,因为在外层 if 和加锁之间,切换了线程并创建了实例,此时切换到原来的线程如果没有判断,就会创建出多个实例。

但是光加了一个外层 if 还不够,此时可能因为指令重排序引起的线程安全问题

instance = new Singletonlazy();分为三条指令
  1. 分配内存空间
  2. 执行构造方法
  3. 内存空间的地址赋值给引用变量

编译器可能按照 1 2 3 的顺序来执行,也可能按照 1 3 2 的顺序执行

当按照 1 3 2的顺序执行时,由于 3 是把内存空间的地址赋值给引用变量,所以此时 instance现在不为 null 了,此时如果其他线程判断外层 if 时,由于instance不为null了,所以直接返回instance,但是此时instance指向没有初始化,上面值全是0的内存,此时getInstance到的就是个错误的值,会引发一系列不可预期的情况。

此时,我们用volatile 关键字告知编译器此变量指令不可重排序即可解决。

class Singletonlazy{private static volatile Singletonlazy instance = null;private static Object locker = new Object();public static Singletonlazy getInstance(){if(instance==null){synchronized (locker){if(instance==null){instance = new Singletonlazy();}}}return instance;}private Singletonlazy(){}
}

http://www.hkea.cn/news/227294/

相关文章:

  • 云南建设监理协会网站营销失败案例分析
  • 怎么样做淘宝优惠券网站搜索引擎营销的优缺点
  • wordpress动态订单seo社区
  • 网站域没到期不能续费吗google谷歌搜索
  • 厦门好的做网站公司网络营销推广方式都有哪些
  • 重庆市建设工程信息官网站自己做网站的流程
  • 网站建设公司怎么做网络营销网站推广
  • 360应用商店seo服务套餐
  • 废橡胶网站建设个人博客网页设计
  • 什么网站做一手项目好域名查询官网
  • 做日用品的要找什么网站好站长工具端口检测
  • 贵州软件开发 网站开发手机版百度一下
  • 企业网站建立答辩问题百度怎么发布广告
  • 温州快建网站地推拉新接单网
  • 濉溪县城乡建设委员会燃气办网站热狗网站排名优化外包
  • 网站能不能自己做免费的seo教程
  • 湖南的商城网站建设优化教程网下载
  • 做网站需要哪些工程师西安seo诊断
  • tp做的网站封装成app2023北京封控了
  • 增城做网站要多少钱推广普通话手抄报
  • 石家庄网站系统开发智能搜索引擎
  • 迅速网站网络营销平台推广方案
  • 学前端要逛那些网站微信引流主动被加软件
  • 韩国flash网站免费手机网站建站平台
  • 东莞做网站卓诚网络昆明长尾词seo怎么优化
  • WordPress个性萌化插件郑州seo优化哪家好
  • 专业手机移动网站建设免费的seo优化
  • 西安网站建设王永杰域名注册 万网
  • 网站营销优化方案北京做的好的seo公司
  • 企业网站排名提升软件优化南宁seo优化