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

绍兴做网站的公司百度关键词排名快速排名

绍兴做网站的公司,百度关键词排名快速排名,wordpress 内容 插件,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.shuangfujiaoyu.com/news/19772.html

相关文章:

  • 盐城网站开发招代理校园推广
  • 深圳网站制作服务公热搜排行榜今日排名
  • 自己做的网站怎么放到网上去千度搜索引擎
  • 用vs2008做网站教程电商平台排行榜
  • 做网站软件大全企业培训课程名称
  • 做阿里巴巴网站图片大全网络营销策划书包括哪些内容
  • 企业手机端网站设计模板网络软文推广平台
  • 北京网站优化经理网站ip查询
  • 机械行业营销型网站新航道培训机构怎么样
  • 宝塔面板一键部署wordpress打不开郑州seo竞价
  • 网络公司网站首页图片百度地图在线查询
  • 免费发布推广的平台有哪些windows7系统优化工具
  • 东莞网站建设分享seo百度竞价关键词价格查询工具
  • 18岁以上准备好纸巾免费网站上海推广系统
  • 承德网站推广上海优化seo公司
  • 个人博客网站logo互联网运营培训课程
  • 网站集约化建设规范站长统计官方网站
  • 苏州电子商务网站建设百度网盘搜索引擎网站
  • 陕西省人民政府参事seo营销策略
  • iis 新建网站 要登录搜索引擎优化不包括
  • wordpress邮件设置密码在线seo诊断
  • 建筑设计网站国外国际新闻最新消息今天
  • 网站建设需求说明书中央新闻联播
  • 孝感的网站建设一站式自媒体服务平台
  • 湖州做网站的搜索引擎推广培训
  • 现在学做网站赚钱吗合肥seo网络优化公司
  • 江西省做网站简述提升关键词排名的方法
  • 呼市做开发网站的公司自己建网站要花多少钱
  • dedecms企业网站模板免费下载非企户百度推广
  • 平江网页设计报价优化大师使用方法