当前位置: 首页 > news >正文 三明企业网站建设公司山西威力网站建设推荐 news 2025/11/1 3:50:59 三明企业网站建设公司,山西威力网站建设推荐,办公空间设计说明200字,宝安区城市建设局网站文章目录 1. 什么是单例模式#xff1f;2. 立即加载/“饿汉模式”3. 延时加载/“懒汉模式”3.1 第一版3.2 第二版3.3 第三版3.4 第四版 1. 什么是单例模式#xff1f; 提起单例模式#xff0c;就必须介绍设计模式#xff0c;而设计模式就是在软件设计中#xff0c;针对特殊… 文章目录 1. 什么是单例模式2. 立即加载/“饿汉模式”3. 延时加载/“懒汉模式”3.1 第一版3.2 第二版3.3 第三版3.4 第四版 1. 什么是单例模式 提起单例模式就必须介绍设计模式而设计模式就是在软件设计中针对特殊问题提出的解决方案。它是多年来针对一些常见的问题的解决方法具有良好的可复用性、可扩展性和可维护性。 标准的设计模式有23种单例模式就是最常见的一种其目的是确认一个类只有一个实例对象并且可以提供一个全局访问点来访问该实例。 单例就是指一个类的实例只有一个即该类的所有对象都指向用同一个实例。 而多数单例模式并没有结合多线程在多线程环境下运行有时会出现线程安全问题所以下面不仅介绍如何实现单例模式还有单例模式结合多线程使用时的相关知识。 2. 立即加载/“饿汉模式” 立即加载一般还被称作饿汉模式根据立即饿汉可以看出十分的急所以在饿汉模式中这样单例中的唯一实例对象就被创建。 创建MyObject.java代码如下 //单例模式、饿汉模式 public class MyObject {//进行封装防止创建新的对象private static MyObject object new MyObject();private MyObject(){};//通过这个方法获得对象public static MyObject getObject(){return object;} }创建线程类MyThread.java public class MyThread extends Thread{Overridepublic void run() {System.out.println(MyObject.getObject().hashCode());} }创建运行类Run.java: public class Run {//测试单例模式对象是同一个public static void main(String[] args) {MyThread t1 new MyThread();MyThread t2 new MyThread();MyThread t3 new MyThread();t1.start();t2.start();t3.start();} }运行结果 运行结果相同说明对象是同一个成功实现了立即加载型单例设计模式。 3. 延时加载/“懒汉模式” 延时懒汉可以看出代码并不着急所以懒汉模式型单例模式中的对象并不像饿汉模式中没有调用前就创建完成而是在第一调用方法实例时才被创建。 对比饿汉模式 优点会减少内存资源浪费。 缺点多线程环境并发运行可能会出现线程安全。 3.1 第一版 创建类MyObjectLazy.java代码如下 public class MyObjectLazy {//单例模式、懒汉模式private static MyObjectLazy myObjectLazy null;private static Object lock new Object();private MyObjectLazy(){};public static MyObjectLazy getMyObjectLazy(){if(myObjectLazy ! null){return myObjectLazy;}else{myObjectLazy new MyObjectLazy();}return myObjectLazy;}}创建线程类MyThreadLazy.java: public class MyThreadLazy extends Thread{Overridepublic void run() {System.out.println(MyObjectLazy.getMyObjectLazy().hashCode());} }创建运行类RunLazy.java: public class RunLazy {//测试对象是不是同一个是的话就是安全的单例模式public static void main(String[] args) {MyThreadLazy t1 new MyThreadLazy();MyThreadLazy t2 new MyThreadLazy();MyThreadLazy t3 new MyThreadLazy();t1.start();t2.start();t3.start();} }运行结果 结果不同所以并不是单例模式其中有问题造成线程不安全。 3.2 第二版 第一版生成不同对象所以造成非线程安全我们可以做出一点修改对代码加上锁。 修改后的MyObjectLazy.java: public static MyObjectLazy getMyObjectLazy(){synchronized (lock){if(myObjectLazy null){myObjectLazy new MyObjectLazy();}}return myObjectLazy;}运行结果 说明这个单例模式是正确实现了。 3.3 第三版 但是第二版又暴露一个问题上面加锁后相当于整个方法都加锁上面一个线程没有释放锁下一个线程将无法运行造成效率低下。 所以我们继续修改修改后的MyObjectLazy.java: public static MyObjectLazy getMyObjectLazy(){try{if(myObjectLazy null){Thread.sleep(1000);synchronized (lock){myObjectLazy new MyObjectLazy();}}}catch(InterruptedException e){e.printStackTrace();}return myObjectLazy;}运行结果 运行结果又不同了创建出了三个对象为什么这是因为虽然上了锁但是if已经判断只是new对象时串行。 虽然效率提高了但这并不是单例模式。 3.4 第四版 我们可以使用DCL双检查锁机制来实现进行两次if判断使线程安全。 修改后MyObjectLazy.java //再一次修改代码加锁只加一块并且应用DCL双检查机制来实现多线程环境下的延时加载单例模式保证线程安全public static MyObjectLazy getMyObjectLazy(){try{if(myObjectLazy null){Thread.sleep(1000);synchronized (lock){if(myObjectLazy null) {myObjectLazy new MyObjectLazy();}}}}catch(InterruptedException e){e.printStackTrace();}return myObjectLazy;}运行结果 使用双检查锁功能成功解决了懒汉模式遇到多线程的问题。DCL经常出现在此场景下我们要学会应用。 文章转载自: http://www.morning.jynzb.cn.gov.cn.jynzb.cn http://www.morning.kkgbs.cn.gov.cn.kkgbs.cn http://www.morning.zpqbh.cn.gov.cn.zpqbh.cn http://www.morning.tqpds.cn.gov.cn.tqpds.cn http://www.morning.rtbhz.cn.gov.cn.rtbhz.cn http://www.morning.jcpq.cn.gov.cn.jcpq.cn http://www.morning.sfhjx.cn.gov.cn.sfhjx.cn http://www.morning.yxyyp.cn.gov.cn.yxyyp.cn http://www.morning.gbcxb.cn.gov.cn.gbcxb.cn http://www.morning.jwcmq.cn.gov.cn.jwcmq.cn http://www.morning.yzygj.cn.gov.cn.yzygj.cn http://www.morning.rmpfh.cn.gov.cn.rmpfh.cn http://www.morning.khxwp.cn.gov.cn.khxwp.cn http://www.morning.zqsnj.cn.gov.cn.zqsnj.cn http://www.morning.hwycs.cn.gov.cn.hwycs.cn http://www.morning.sjpht.cn.gov.cn.sjpht.cn http://www.morning.diuchai.com.gov.cn.diuchai.com http://www.morning.qcymf.cn.gov.cn.qcymf.cn http://www.morning.pbpcj.cn.gov.cn.pbpcj.cn http://www.morning.gjlxn.cn.gov.cn.gjlxn.cn http://www.morning.dygqq.cn.gov.cn.dygqq.cn http://www.morning.qdrhf.cn.gov.cn.qdrhf.cn http://www.morning.ngpdk.cn.gov.cn.ngpdk.cn http://www.morning.mpnff.cn.gov.cn.mpnff.cn http://www.morning.ymwnc.cn.gov.cn.ymwnc.cn http://www.morning.rxhs.cn.gov.cn.rxhs.cn http://www.morning.ldspj.cn.gov.cn.ldspj.cn http://www.morning.tbqbd.cn.gov.cn.tbqbd.cn http://www.morning.tpkxs.cn.gov.cn.tpkxs.cn http://www.morning.qjlnh.cn.gov.cn.qjlnh.cn http://www.morning.rdkt.cn.gov.cn.rdkt.cn http://www.morning.rwlsr.cn.gov.cn.rwlsr.cn http://www.morning.qwlml.cn.gov.cn.qwlml.cn http://www.morning.ffbp.cn.gov.cn.ffbp.cn http://www.morning.ldqzz.cn.gov.cn.ldqzz.cn http://www.morning.txmlg.cn.gov.cn.txmlg.cn http://www.morning.pdynk.cn.gov.cn.pdynk.cn http://www.morning.nlgnk.cn.gov.cn.nlgnk.cn http://www.morning.mnnxt.cn.gov.cn.mnnxt.cn http://www.morning.tzzkm.cn.gov.cn.tzzkm.cn http://www.morning.rqbr.cn.gov.cn.rqbr.cn http://www.morning.bxhch.cn.gov.cn.bxhch.cn http://www.morning.zljqb.cn.gov.cn.zljqb.cn http://www.morning.skrrq.cn.gov.cn.skrrq.cn http://www.morning.pltbd.cn.gov.cn.pltbd.cn http://www.morning.wwkft.cn.gov.cn.wwkft.cn http://www.morning.mbbgk.com.gov.cn.mbbgk.com http://www.morning.tddrh.cn.gov.cn.tddrh.cn http://www.morning.jzxqj.cn.gov.cn.jzxqj.cn http://www.morning.gywxq.cn.gov.cn.gywxq.cn http://www.morning.xrrjb.cn.gov.cn.xrrjb.cn http://www.morning.rsjng.cn.gov.cn.rsjng.cn http://www.morning.zyffq.cn.gov.cn.zyffq.cn http://www.morning.rtspr.cn.gov.cn.rtspr.cn http://www.morning.hcsqznn.cn.gov.cn.hcsqznn.cn http://www.morning.zymgs.cn.gov.cn.zymgs.cn http://www.morning.npbgj.cn.gov.cn.npbgj.cn http://www.morning.ctpfq.cn.gov.cn.ctpfq.cn http://www.morning.clqpj.cn.gov.cn.clqpj.cn http://www.morning.hhxkl.cn.gov.cn.hhxkl.cn http://www.morning.rgrz.cn.gov.cn.rgrz.cn http://www.morning.xwqxz.cn.gov.cn.xwqxz.cn http://www.morning.nzklw.cn.gov.cn.nzklw.cn http://www.morning.ysfj.cn.gov.cn.ysfj.cn http://www.morning.bgpb.cn.gov.cn.bgpb.cn http://www.morning.zdmrf.cn.gov.cn.zdmrf.cn http://www.morning.smygl.cn.gov.cn.smygl.cn http://www.morning.zhoer.com.gov.cn.zhoer.com http://www.morning.qwwhs.cn.gov.cn.qwwhs.cn http://www.morning.rmlz.cn.gov.cn.rmlz.cn http://www.morning.bnrff.cn.gov.cn.bnrff.cn http://www.morning.rflcy.cn.gov.cn.rflcy.cn http://www.morning.xbxks.cn.gov.cn.xbxks.cn http://www.morning.nrgdc.cn.gov.cn.nrgdc.cn http://www.morning.dhyqg.cn.gov.cn.dhyqg.cn http://www.morning.oumong.com.gov.cn.oumong.com http://www.morning.zzaxr.cn.gov.cn.zzaxr.cn http://www.morning.lsqmb.cn.gov.cn.lsqmb.cn http://www.morning.dnbkz.cn.gov.cn.dnbkz.cn http://www.morning.tdldh.cn.gov.cn.tdldh.cn 查看全文 http://www.tj-hxxt.cn/news/266998.html 相关文章: 网页设计教程免费网站html静态页面 医疗网站优化怎么做同城分类信息网站 网站建设分金手指排名二八电子商务网站建设考题 天津做网站的公司采集评论发布到wordpress 网站建设活动广告应用中心 简洁好看的网站360优化大师最新版 网站联盟广告名词解释汕头保安公司 所有网上购物的网站做网站图片大会导致慢 做网站js是什么做网站简单需要什么软件 企划做网站原创作文网 织里网站建设营销型网站建设哪家便宜 优化一个网站局门户网站的建设方案 网站工程前端网站一般字体 wordpress网站标签logo长沙网络营销已成趋势 网站怎么做淘宝客深圳网站建设公司推荐乐云seo 网站建设所需要的内容新开传奇网站180火龙 抚顺市+网站建设设计公司的企业文化内容 行业门户网站建站直播网站开发费 北京 好的网站制作wordpress评论添加验证 玉树网站建设国外网站视频播放器 网站怎样做wap端扒下来的网站怎么做修改 为什么用Vue做网站的很少dw网页设计模板图片 做网站数据库网站上人家做的简历 湛江网站建设费用成都建站培训 wordpress 中型网站wordpress 加速js插件 怎样建网站联系方式中国设计者联盟官网 安徽电子学会网站建设怎么样自己开网站 重庆网站网站建设常德红网官网网站 一流的购物网站建设wordpress 字体 本地 息壤服务器网站打不开做家教在哪个网站