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

江苏SEO网站建设红塔网站制作

江苏SEO网站建设,红塔网站制作,吉安哪里做网站,如何做企业网站加v所谓的单例模式就是保证某个类在程序中只有一个对象 一、如何控制只产生一个对象#xff1f; 1.构造方法私有化#xff08;保证对象的产生个数#xff09; 创建类的对象#xff0c;要通过构造方法产生对象 构造方法若是public权限#xff0c;对于类的外部#xff0c;可…所谓的单例模式就是保证某个类在程序中只有一个对象 一、如何控制只产生一个对象 1.构造方法私有化保证对象的产生个数 创建类的对象要通过构造方法产生对象 构造方法若是public权限对于类的外部可以随意创建对象无法控制对象个数 构造方法私有化这样类的外部就彻底无法产生对象一个对象都没有。 2.单例类的内部提供这个唯一的对象static 构造方法私有化后对于类的外部而言就一个对象都没有了。因此要在这个类的内部构造出这个唯一的对象只调用一次构造方法即可这个单例对象不能是类的成员属性因为成员变量必须通过对象来访问但是类的外部根本无法产生对象矛盾因此这个对象必须使用static关键字修饰静态变量不依赖类的对象 3.单例类提供返回这个唯一对象的静态方法供外部使用 二、饿汉式单例 饿汉式单例模式是天然的线程安全的。类加载时就创建了这个唯一的对象 /*** 饿汉式单例(类加载就产生这个唯一的对象也不管外部是否调用该对象)。饥不择食这个类一加载就把惟一的这个对象产生了* 我也不管外部到底用不用这个对象只要这个类加载到JVM唯一对象就会产生**/ public class SingleTon {// 惟一的这一个对象private static SingleTon singleTon new SingleTon();private SingleTon() {}// 调用此方法时singleTon对象已经产生过了多线程场景下取回的是同一个单例对象public static SingleTon getSingleton() {return singleTon;} } 三、懒汉式单例 懒汉式单例只有第一次调用getSingleTon表示外部需要获取这个单例对象时才产生对象 public class LazySingleTon {private static LazySingleTon singleTon ;private LazySingleTon(){}public LazySingleTon getSingleTon(){if (singleTon null){singleTon new LazySingleTon();}return singleTon;} }多线程场景下会产生线程安全问题不能确保只有一个对象产生  在这个场景下三个线程并发调用get方法此时三个 线程看到的singleTon 都为null因此每个线程都创建了一个对象 四、解决懒汉式单例的线程安全问题 1.静态方法上加锁 public synchronized static LazySingleTon getSingleTon(){if (singleTon null){singleTon new LazySingleTon();}return singleTon;} 在方法上上锁表示同一时间只有一个线程能进入此方法其他线程想要进入此方法都等待获取锁成功的线程释放锁。此时getSingleTon的内部都是单线程操作锁的粒度太粗。 2.double-check双重加锁 private volatile static LazySingleTon singleTon ;private LazySingleTon(){}public static LazySingleTon getSingleTon(){if (singleTon null){synchronized (LazySingleTon.class){if (singleTon null){singleTon new LazySingleTon();}}}return singleTon;} volatile的作用内存屏障可见性 此时有t1,t2,t3三个线程t1首先获取到了锁开始执行new操作虽然还没完全结束但此时的singleTon ! null对于刚开始执行代码的t2,t3来说它们看到singleTon null 直接返回了但是返回后的单例对象是一个尚未完全初始化的对象 此时采用volatile关键字修饰单例对象new操作有着一堵墙其它线程要能执行到return语句JVM一定保证了new操作完全结束了之后才会执行return语句。 double-check:防止其他线程恢复执行后多次创建单例对象 当t1先进入同步代码块后t2,t3卡在获取所得位置 t1产生对象后释放锁 t2,t3还是从获取锁的位置继续执行在他们的工作内存中singleTon null  t2,t3就会再次new对象。
http://www.yutouwan.com/news/20143/

相关文章:

  • 企业网站建设河北创意海报设计
  • 关键词优化是什么seo如何提高网站排名
  • 大连做网站哪家好怎么搜索网站内容
  • 如何让网站被百度收入电影网站建设的核心是
  • 空间网站模板企业网站优化培训
  • 网站开发的基本过程有没有在线辅导家做的网站
  • 信阳网站设计论述网站建设过程中应注意的问题
  • 网站建设优化服务器苏州市建设局网站地址
  • 百度搜索不到任何网站备案时网站名称可以重复吗
  • 上海网站建设升太原网站建设总部地址
  • 滴滴注册网站邯郸网站建设找谁
  • php大型网站开发书籍深圳中装建设
  • 微微网站建设潍坊网站建设评价
  • 网站建设需求分析运行环境处理器型号及内存容量贷款在线申请
  • 合肥网站排名优化公司哪家好门户网站建设方案是什么意思
  • 怎样在网站上做销售网页设计与制作教程第5版
  • dede个人网站模板焦作网站建设兼职
  • 反钓鱼网站联盟东莞企业网站建设预算大概多少
  • 1元购网站建设网站建设备案流程图
  • 西部数码网站管理助手4.0自己搭服务器 做购物网站成本
  • 互联网行业网站设计公司网站上传文章
  • 网站功能模块表格上海网站建设 分类广告
  • 建设部网站事故快报深圳专业做网页的公司
  • 网站后台密码忘记了钓鱼网站在线生成器
  • 镇江网站seo外包google推广怎么做
  • 钓鱼网站代做企业管理系统说明
  • 医疗网站建设渠道无极网页游戏
  • 淘宝上开个网站建设重庆网站推广 软件
  • 做网站很火的APP做网上营销怎样推广
  • 网站开发专业术语网站集约化建设进度报告