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

jsp网站开发需要哪些技术上海高端点网站建设制作公司有哪些?|网站建设

jsp网站开发需要哪些技术,上海高端点网站建设制作公司有哪些?|网站建设,大专网页设计实训报告,网站怎么设计制作单例模式 文章目录 单例模式1. 什么是单例模式2. 饿汉模式3. 懒汉模式3.1 单线程版#xff1a;3.2 多线程版 1. 什么是单例模式 单例模式是一种设计模式#xff0c;常见的设计模式还有工厂模式、建造者模式等。 设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码…单例模式 文章目录 单例模式1. 什么是单例模式2. 饿汉模式3. 懒汉模式3.1 单线程版3.2 多线程版 1. 什么是单例模式 单例模式是一种设计模式常见的设计模式还有工厂模式、建造者模式等。 设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。我们使用这些设计模式相当于是前辈们在一些特殊的场景下总结出的经验我们直接使用即可相当于站在巨人的肩膀上编程     单例模式是针对一些特定的类只允许创建一个实例。为什么会有单例模式因为引入单例模式后在代码层面会有强制检查不会允许创建出第二个实例避免一些bug人为检查是及其不可靠、不可控的。     单例模式有两种实现方式分别是饿汉模式和懒汉模式我们就这两种实现展开。 2. 饿汉模式 class Singleton{private static Singleton instance new Singleton();public static Singleton getInstance() {return instance;}private Singleton() {} } public class Test {public static void main(String[] args) {Singleton sgt1 Singleton.getInstance();Singleton sgt2 Singleton.getInstance();System.out.println(sgt1 sgt2);} } 运行结果~~ true进程已结束退出代码为 0饿汉模式首先是线程安全的对象在类加载时就会创建好然后将构造方法设为私有不允许再创建实例最后通过公有方法将这个对象提供给外层调用。     这种模式为什么叫饿汉模式呢其实也很简单无论外层需不需要使用这个对象在类加载时这个对象就已经创建了。而相比于饿汉模式懒汉模式的做法则更加高效在第一次实用类的时候在进行创建。 3. 懒汉模式 3.1 单线程版 class Singleton {private static Singleton instance null;private Singleton() {}public static Singleton getInstance() {if (instance null) {instance new Singleton();}return instance;} }为什么说这样实现懒汉模式是单线程版本因为这个版本的懒汉模式在并发环境下会产生线程安全问题即线程不安全。     线程安全问题发生在首次创建实例时. 如果在多个线程中同时调getInstance 方法, 就可能导致创建出多个实例。一旦实例已经创建好了, 后面再多线程环境调用 getInstance 就不再有线程安全问题了(不再修改instance 了)因此枷锁synchronized可以一定程度上改善这个问题。 这个版本的懒汉模式在多线程环境下一但有其他线程在第一次创建对象时穿插OS系统调度进行执行就可能会创建出多个实例。 3.2 多线程版 class SingletonLaze{private volatile static SingletonLaze instance null;public static SingletonLaze getInstance() {if(instance null) {synchronized(SingletonLaze.class) {if (instance null) {instance new SingletonLaze();}}}return instance;}private SingletonLaze() {}在这个版本中对if判断进行枷锁保证了创建对象时不会有其它线程穿插执行在进一步给instance使用volatile修饰保证可见性、顺序从而保证了线程安全。我们进一步发现只有在第一次进入时才会需要创建对象而如果每次都枷锁就会降低程序的执行效率所以我么在外部又嵌套了一层if。此处要注意的是这两层if虽然条件一样但是含义却不一样。     锁竞争枷锁解锁的开销是比较大的而懒汉模式只有在第一次才需要创建对象产生锁竞争后续就不在需要锁竞争了也不必枷锁。 外层if 外层if是判断单例模式的对象是否创建出来如果已经创建则直接返回instanceinstance被volatile修饰不会产生内存可见性问题不会产生锁竞争。内层if当线程第一次执行时会进入内层竞争同一把锁假设线程1拿到锁就可以创建出对象此时线程1执行完后由于没内存可见性问题其它线程就会发现instance已经不为空了从而不会继续进入外层if竞争锁对象降低了锁竞争的开销。 如果本篇文章对你有帮助请点赞、评论、转发你的支持是我创作的动力
http://www.w-s-a.com/news/814421/

相关文章:

  • 舟山高端网站设计广州优化排名推广
  • 哪个网站做免费广告好上海人才网站
  • cn域名做网站竞价推广代理
  • 省建设干部培训中心网站网站地图1 500 怎么做
  • 制作一个网站需要哪些人网站建设经营服务合同
  • 山东省住房和城乡建设厅官方网站网易发布广州
  • 长沙设计网站效果设计师灵感网站
  • 做网站php都用什么框架把asp.net写的网站别人怎么访问
  • 网站建设捌金手指下拉六正规的代运营公司
  • 自己申请网站空间冀州建网站
  • 哈尔滨旅游团购网站建设江苏建设工程建设网
  • 在郑州做网站茶叶网站建设网页设计制作
  • 58做网站吗南京有关制作网站的公司
  • 申请建设门户网站的申请先做网站还是先申请域名
  • 门户网站怎么做seo玩具外贸好做吗
  • 网页设计模板的网站黄埔营销型网站建设
  • 企业为什么要建立网站江苏高校品牌专业建设工程网站
  • 网站建设公司需要交税么福建省城乡建设厅网站
  • dedecms网站首页网站正在建设中 源码下载
  • 论坛网站有哪些怎么wordpress主题
  • 网站搭建中企动力第一返利的网站怎么做
  • 在哪网站可以做农信社模拟试卷优衣库网站建设的目的
  • 杭州网站建设ttmwl网络平台推广公司
  • 工作室网站技能培训班
  • 东丰网站建设万盛网站制作
  • 安徽黄山网站建设wordpress 公众号 获取密码
  • 自己电脑做网站模板腾讯网站建设分析
  • 如何增加网站反链虚拟主机 2个网站
  • 手机网站调用分享wordpress.org移除
  • 工业和信息化部网站备案系统查询市场调研表模板