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

免费建公司网站的攻略/北京seo关键词优化收费

免费建公司网站的攻略,北京seo关键词优化收费,大旺建设局网站,潮州企业网站建设导读:上篇博客说到,我想将单例模式和代理模式结合起来,以尽可能避免在并发情况下的真实对象的重复创建。光说不练,假把式,代码走你! 一、使用了单例模式的效果 接口: public interface IDBQuery…

导读:上篇博客说到,我想将单例模式和代理模式结合起来,以尽可能避免在并发情况下的真实对象的重复创建。光说不练,假把式,代码走你!

一、使用了单例模式的效果

接口:

public interface IDBQuery{String Request();
}

实现类:DBQuery

备注:添加构造方法,是为了测试本类被创建的次数

public class DBQuery implements IDBQuery{private static int i=0;public DBQuery(){System.out.println("haha");i++;}private static class DBQueryHolder{private static final DBQuery INSTANCE=new DBQuery();private DBQueryHolder(){}}public static final DBQuery getInstance(){return DBQueryHolder.INSTANCE;}@Overridepublic String Request(){return "request String"+i;}
}

代理类:DBQueryProxy

public class DBQueryProxy implements IDBQuery{private DBQuery real=null;@Overridepublic String Request(){if(real==null){real =DBQuery.getInstance();}return real.Request();}
}
测试类:Main(哈哈,终于用了一把CountDownLatch)

import java.util.concurrent.CountDownLatch;public class Main {private Main() {}public static void main(String args[]) throws InterruptedException {final CountDownLatch beginCountDown = new CountDownLatch(5);// 同步开始信号量final CountDownLatch endCountDown = new CountDownLatch(5);// 同步结束信号量for (int i = 0; i < 5; i++) {new Thread() {@Overridepublic void run() {System.out.println("我是第" + this.getName() + "号线程,我已经准备好了!");beginCountDown.countDown();try {beginCountDown.await();// 等待5个线程准备就绪} catch (InterruptedException e) {e.printStackTrace();}// 并发内容--------开始---------IDBQuery q = new DBQueryProxy();System.out.println(q.Request());System.out.println("我是第" + this.getName() + "号线程,我已经访问完了!");// 并发内容--------结束---------endCountDown.countDown();// 等待所有线程执行结束,完成一个信号量减一}}.start();}try {endCountDown.await();} catch (InterruptedException e) {e.printStackTrace();} finally {System.out.println("并发执行结束");}}
}

打印结果:



分析:从打印“haha”的次数,以及 i 变量的值来看,真实类DBQuery只被创建了一次


二、不适用单例模式的效果

DBQuery类:

public class DBQuery implements IDBQuery{private static int i=0;public DBQuery(){System.out.println("haha");i++;}@Overridepublic String Request(){return "request String"+i;}
}
DBQueryProxy代理类:

public class DBQueryProxy implements IDBQuery{private DBQuery real=null;@Overridepublic String Request(){if(real==null){real =new DBQuery();}return real.Request();}
}

其余代码与使用单例的相同

打印结果:


分析:额,不用说了吧,结果很明显


三、总结

要把学过的东西,切实的用起来。只是我在想,有那么容易并发吗?我之所以有那种感觉要用上单例,是因为我觉得代理类以及被创建了很多个了,实在没必要再整一堆的真实类对象出来,因为只要有一个,就可以解决问题了!对象多了,占地方!而且,老回收回收,会累的!

额,也有可能是我真的想多了,视情况而定吧。我个人能力有限,要学习的还有很多,还请垂阅本篇博客的人,给予指点!

转载于:https://www.cnblogs.com/hhx626/p/7534610.html

http://www.jmfq.cn/news/4963033.html

相关文章:

  • 湖北高端企业礼品定制/重庆自动seo
  • 武汉的电商网站设计/淘宝seo搜索优化
  • 北京专业网站制作流程优势/网站统计数据分析
  • 营销型 网站开发/深圳市seo点击排名软件价格
  • 城乡建设委(房管局)官方网站/手机优化软件下载
  • 跨境电商开店大概流程/广东网站se0优化公司
  • 长沙网站建站/百度云网盘资源链接
  • 白塔网站建设/网络营销课程总结1500字
  • 做淘宝详情页的网站/北京优化核酸检测
  • 做阿里巴巴网站口碑/链接
  • 阿里云wordpress发邮件/选择宁波seo优化公司
  • 网站维护难做/seo相关岗位
  • 做网站需要记哪些代码/视频外链平台
  • 毕设做网站些什么比较简单/优化网站建设
  • 黑科技推广软件/郑州seo优化顾问
  • wordpress快速安装/网站seo 工具
  • 最好网站制作工具/seminar
  • 棒的外贸网站建设/郑州网站推广电话
  • 网站的建设方案/股票发行ipo和seo是什么意思
  • 网站定位的核心意义/充电宝关键词优化
  • 建设工程资料下载网站/东莞seo排名扣费
  • 地方战友网站建设/百度搜索推广产品
  • 濮阳建网站/dw如何制作网页
  • 个人电脑做网站服务器网站/搜索引擎排名优化建议
  • 免费建站软件哪个最好/seo入门培训课程
  • 网站能找到做网站的人/常用的网站推广方法
  • 深圳做网站应该怎么做/便民信息微信平台推广
  • 哪个网站可以做c语言的题/网站规划
  • 济宁网站建设神华科技/面点培训学校哪里有
  • vb net 做网站/百度竞价排名