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

工业园网站建设html制作网页代码

工业园网站建设,html制作网页代码,网站设计编程,jsp 哪些网站单例模式是设计模式之一,能保证某个类在程序中只存在唯一一份实例,而不会创建出多个实例 单例模式的具体实现方法有很多,最常见的是 “饿汉” 和 “懒汉” 两种。 饿汉模式 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.yayakq.cn/news/815483/

相关文章:

  • 有没有做网站的团队广州开发区投资集团有限公司
  • 网站设计有创意的主题dedecms更改网站logo
  • 万户做网站如何企业微信app下载安装官方版
  • 免费视频网站推荐wordpress简洁移动主题
  • 带后台的网站模板下载网页设计师工作室
  • 东莞便宜做网站wordpress tag插件
  • 公司网站建设劳伦wordpress 行间距插件
  • 网站开发全程实例设计说明书模板
  • 泉州有哪些做网站的什么网站是做电机控制的
  • 西宁市规划和建设局网站小满crm
  • 有没有专门做中式的设计网站做推文的网站的推荐
  • 品牌网站建设 细致磐石网络广告公司广告语简洁
  • 济南小程序网站开发公司官网怎么做
  • 沈阳火车站阿里云虚拟主机搭建wordpress
  • 百度上能收到的企业名称网站怎么做渠道推广代理
  • 国企网站的建设网站开发工程师asp考试
  • 备案 添加网站衡水市住房和城乡建设局网站
  • 怎么制作一个表白网站网站源码怎么用
  • 网站 建设 深圳石家庄站分布图
  • 上海建设银行青浦分行网站网络服务推广易下拉技巧
  • 开发网站公司有哪些码制作二维码生成器
  • 网站支付接口如何做二维码怎么在网站上做推广
  • 网站设计与建设课后题答案促销方法100种
  • 百度做网站的费用东莞网络企业推广
  • 网站是先备案 还是先做网站wordpress 站点图标
  • 装饰装修网站大全电脑访问手机网站跳转
  • 网站建设中的图片及视频要求wordpress安装指南
  • 鸿扬家装网站建设哪个网站做的最好
  • 北京建站旅游电子商务网站规划书
  • 全网营销网站怎么做国际新闻最新消息今天新闻大事件 中方