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

wordpress betube模板浙江seo外包

wordpress betube模板,浙江seo外包,乐清柳市阿里巴巴做网站的,做微课的网站有哪些方面单例模式是设计模式的一种,先谈谈什么是设计模式? 大家应该都知道棋谱、剑谱之类的,就是一些“高手”在经历过长期的累计之后,更具经验写出的具有固定套路的处理“方法”,只要按照这个套路来,在对局之中必然…

单例模式是设计模式的一种,先谈谈什么是设计模式?

大家应该都知道棋谱、剑谱之类的,就是一些“高手”在经历过长期的累计之后,更具经验写出的具有固定套路的处理“方法”,只要按照这个套路来,在对局之中必然是不会吃亏的,甚至能够一招制敌。

那么在我们日常的开发中也有大佬们针对一些十分常见的场景,抽象出固定的套路。一些小白在学习了大佬总结的设计模式之后,就像是掌握了套路,针对适用的场景就不会吃亏。

单例模式的使用场景是什么呢?单例模式能够保证某个类的在程序中只存在唯一的一份,就算是new多个实例,实际上也是同一份。

这一点在很多场景上都需要. 比如 JDBC 中的 DataSource 实例就只需要一个.

单例模式的具体实现方式可以分为 饿汉模式 和 懒汉模式:

饿汉模式:

类加载的同时创建实例。

class Singleton{//static 修饰 是类属性 直接在类加载的时候将实例创建出来,饿汉模式private static Singleton instance = new Singleton();//为了避免Singleton类不小心被复制出多份//将构造方法设置为private。这样在类外面就没有办法通过new的方式来创建 Singleton这个实例了private Singleton() {}public static Singleton getInstance(){return instance;}
}

懒汉模式-单线程版本

类加载的时候不创建实例. 第一次使用的时候才创建实例.

class SingletonLazy{private static SingletonLazy instance = null;private SingletonLazy(){}public static SingletonLazy getInstance(){if(instance == null){instance = new SingletonLazy();}return instance;}
}

懒汉模式-多线程版本

为什么这里的懒汉模式需要考虑多线程版本呢?因为上面的单线程的代码存在线程安全的问题。不安全是因为在getInstance当中有对instance的写操作,涉及到写操作的时候就要小心了。如果在第一次创建实例的时候有多个线程同时调用了getInstance方法就会导致创建出多个不同的实例了,与我们的单例模式初衷所悖。因此需要对这里的写操作加锁:

class Singleton {private static Singleton instance = null;private Singleton() {}public synchronized static Singleton getInstance() {if (instance == null) {instance = new Singleton();}return instance;}
}

懒汉模式-多线程改进版本

上面的代码还存在着两个不足

  1. 加锁是一个开销比较高的操作,我们也看到了之所以线程不安全是因为在第一次创建实例的时候有可能有多个线程同时施行,导致了创建出多个不同的实例。那么我们只需要针对首次创建实例的时候加锁,后续的操作就没有必要加锁了。这样可以提升很大的效率。
  2. 同时为了避免“内存可见性”导致读取的instance存在偏差,于是补充上volatile
class SingletonThread {private static volatile SingletonThread instance = null;private SingletonThread() {}public static SingletonThread getInstance() {if (instance == null) {synchronized (SingletonThread.class) {if (instance == null) {instance = new SingletonThread();}}}return instance;}
}

注意理解两个if判定。

虽然两个if的判定条件是一样的但是两者的含义却大大不同。第一个if判定是判定instance是否是第一次创建,如果没有创建的话就开始创建实例并且加锁。第二个if判定抢夺到锁后,instance是否已经被创建了。两个if语句不可以省略任意一个。

http://www.yidumall.com/news/72342.html

相关文章:

  • 做网站手机深圳网络推广大师
  • 营销型网站结构市场营销策略
  • 网站三网合一什么意思百度推广开户渠道公司
  • 校园网站的意义东莞建设网
  • 连云港网站关键词优化服务网站注册账号
  • 使用wordpress的购物网站2023年适合小学生的新闻
  • 梅林网站建设互联网营销渠道有哪些
  • 网站去公安局备案网络优化app哪个好
  • 厦门外贸网站建设哪家公司大百度手机助手下载安卓版
  • web网站开发毕业设计任务书免费个人网页制作
  • 公司网站建设前期情况说明东莞网站推广策划
  • 三级做视频网站有哪些优化设计单元测试卷答案
  • 个人网站备案怎么样才能简单的过网站关键词seo排名
  • 医院网站开发公司网推什么意思
  • 在线教育网站建设方案谷歌网页
  • 汕头做网站营销网络是啥意思
  • 网络营销哪家比较专业广州软件系统开发seo推广
  • 山西网站建设今日头条极速版官网
  • 郓城住房和城乡建设厅网站注册域名要钱吗
  • 矿产网站开发seo推广软件品牌
  • 山西响应式网站设计网站测试
  • wordpress评论去掉网址seo搜索引擎优化关键词
  • led灯网站建设案例手机网站制作软件
  • 深圳乐创网站建设常见的网络推广方式
  • 王也头像高清帅气网络推广seo是什么
  • 做初中物理题目的网站网络外贸推广
  • 淞南网站建设抚顺网站建设
  • 做网站赚钱 百度网盟推推蛙品牌策划
  • 做动态网站的用工具网络营销seo是什么意思
  • 电商网站建设如何厦门百度代理公司