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

北龙建设集团有限公司企业网站百度seo和sem

北龙建设集团有限公司企业网站,百度seo和sem,深圳建设招标网站首页,花儿直播免费视频观看单例模式 描述 单例模式是一种创建型模式#xff0c;它的目的是确保一个类只有一个实例#xff0c;并提供全局访问点。这个实例可以被多个客户端共享#xff0c;从而避免创建多个实例所带来的资源浪费和不必要的复杂性。 实现 懒汉模式 public class LasySingleton {priv…单例模式 描述 单例模式是一种创建型模式它的目的是确保一个类只有一个实例并提供全局访问点。这个实例可以被多个客户端共享从而避免创建多个实例所带来的资源浪费和不必要的复杂性。 实现 懒汉模式 public class LasySingleton {private volatile static LasySingleton singleton;private LasySingleton(){}public static synchronized LasySingleton createInstance(){if(null singleton){singleton new LasySingleton();}return singleton;} } 在有些情况下JIT编译器可能会将对象的初始化操作指令重排。我们用使用jdk自带的反编译去查看汇编代码 在JIT编译器进行重排后的顺序会变成以下情况 这种情况下在外界拿到实例对象可能是一个未初始化完成的半成品。 所以需要通过volatile来声明实例从而防止指令重排。 懒汉模式最粗暴的方法是在让实例的创造方法变为同步方法这样能保证实例的唯一性。所有的线程都会被阻塞。阻塞的情况下是非常耗时的我们应该尽可能避免线程阻塞。 实例未创建或者创建都会被阻塞中那么有没有一种方法在对象创建成功后不需要阻塞呢 双重检查锁(DDL) public static LasySingleton createInstanceByDDL() {if (null singleton) {synchronized (LasySingleton.class) {if(null singleton){singleton new LasySingleton();}}}return singleton;}饿汉模式 public class HungrySingleton {private static HungrySingleton singleton new HungrySingleton();private HungrySingleton(){}public static HungrySingleton createInstance(){return singleton;} }在不受其他干扰的情况这两种模式都能实现单例但是如果我们通过反射去破坏那么单例还能实现吗 反射破坏单例 实现 Testpublic void hungryDestory() throws Exception {ClassHungrySingleton clazz HungrySingleton.class;ConstructorHungrySingleton constructor clazz.getDeclaredConstructor();//使构造方法范围变为publicconstructor.setAccessible(true);HungrySingleton hungrySingleton constructor.newInstance();System.out.println(hungrySingleton);System.out.println(HungrySingleton.createInstance());}Testpublic void lasyDestory() throws Exception {ClassLasySingleton clazz LasySingleton.class;ConstructorLasySingleton constructor clazz.getDeclaredConstructor();//使构造方法范围变为publicconstructor.setAccessible(true);LasySingleton lasySingleton constructor.newInstance();System.out.println(lasySingleton);System.out.println(LasySingleton.createInstance());}实验结果 很容易发现单例模式已经被破坏。那么我们要如何去防止反射破坏呢 我们可以在构造方法中对实例进行判断如果实例已经被创建我们只需要返回那个实例。 解决反射破坏问题 饿汉模式 private HungrySingleton(){if(null singleton){}else {throw new RuntimeException(单例已经存在);}}在进入构造方法前类变量单例已经完成创建。饿汉模式完美解决反射破坏。 懒汉模式无法实现 private LasySingleton() {if(null ! singleton){throw new RuntimeException(单例已经存在);}}懒汉模式在实例创建之前使用反射进行破坏可以创建多个实例无法防止反射破坏。 实现场景 SpringBean容器 ApplicationContext。线程池数据库连接池
http://www.dnsts.com.cn/news/176376.html

相关文章:

  • 东莞品牌网站制作望牛墩镇做网站
  • 新手做网站免费域名wordpress没注册按钮
  • 做网站的赢利点上海微网站制作
  • 国外可以做会员网站的网站杭州网站快速备案
  • 怎么制作网站app设计公司详情
  • 佛山市企业网站建设哪家好企业云服务平台
  • 2019年云南建设银行招聘网站wordpress 谷歌字体解决
  • 制作网站方法个人网站怎样做超链接
  • 个人网站做导购可以吗8一9岁的手工
  • 网站建设需要懂什么做网站建设需要会哪些
  • 服饰网站建设技术方案自己弄网站怎么弄
  • 活动策划网站网站怎么做代码优化
  • 上海营销网站建设单页网站程序
  • 网站建设项目验收单没有备案的网站百度不收录
  • 教做甜点的网站如何做可以微信转发的网站
  • 微信做模板下载网站有哪些坂田网站建设公司
  • 应不应该购买老域名建设新网站苏州工程建设网
  • 酒店网站怎么做wordpress cache
  • 自助建站申请教育机构排名
  • asp购物网站公司网站怎么更新维护
  • 天津实用网站建设成都网站空间创新互联
  • 成都科技网站建设联系电话如何建设网站的目录结构层
  • 建设银行招聘网站甘肃分行网站建设平台价格
  • 建设网站后台汕头市住建局
  • 网站建设和管理情况调查表网页版传奇源码
  • 罗湖商城网站建设哪家公司便宜点唐山做网站多少钱
  • 绑定网站南宁重大项目签约
  • 建筑兼职网站吉林长春seo网站建设网站优化
  • 受欢迎的建网站哪家好自己做企业网站可以吗
  • 颍州网站建设长沙做网站改版费用