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

58网站为啥做不好大学生做的美食网站

58网站为啥做不好,大学生做的美食网站,磁力搜索引擎不死鸟,山东省建设资格中心网站目录 一、定义 二、应用场景 三、6种实现方式 1、懒汉式#xff0c;线程不安全。 2、懒汉式#xff0c;线程安全 3、双检锁/双重校验锁#xff08;DCL#xff0c;即 double-checked locking#xff09; 4、静态内部类方式-------只适用于静态域 5、饿汉式 6、枚举…目录 一、定义 二、应用场景 三、6种实现方式 1、懒汉式线程不安全。 2、懒汉式线程安全 3、双检锁/双重校验锁DCL即 double-checked locking 4、静态内部类方式-------只适用于静态域 5、饿汉式 6、枚举 四、总结 一、定义 单例模式Singleton Pattern是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式它提供了一种创建对象的最佳方式。 单例模式涉及到一个单一的类单例类只能自己创建唯一的一个实例并提供了一个全局访问点使所有其他对象获取到类的唯一实例。 特点 唯一实例确保类只有一个实例。全局访问点提供一个全局访问点来获取类的实例。线程安全在多线程环境中确保实例的唯一性。 二、应用场景 1、配置管理应用程序可能需要一个只初始化一次的配置管理器。 2、日志记录日志记录器通常只需要一个实例以避免日志信息的混乱。 3、性能优化某些对象的创建成本很高使用单例模式可以避免重复创建。 三、6种实现方式 分类 饿汉式类加载就会导致该单实例对象被创建。​懒汉式类加载不会导致该单实例对象被创建而是首次使用该对象时才会创建。 1、懒汉式线程不安全。 在这种情况下我们只有调用 getInstance 方法 instance 对象才会被创建。 在多线程情况下很多线程都来请求获取该对象这样就可能创建出多个对象导致线程不安全。 /*** 懒汉式 线程不安全*/ public class SingletonLazy {//定义一个私有构造方法private SingletonLazy(){}//创建该类对象private static SingletonLazy instance;//对外提供静态方法获取该对象public static SingletonLazy getInstance(){if(instancenull){instance new SingletonLazy();}return instance;} }2、懒汉式线程安全 由于上述会出现线程不安全问题所以我们通过加同步锁保证每次只有一个线程可以对当前对象进行操作确保了线程安全。但加锁会影响效率。 /*** 懒汉式 线程安全*/ public class SingletonLazy {//定义一个私有构造方法private SingletonLazy(){}//创建该类对象private static SingletonLazy instance;//对外提供静态方法获取该对象 , 加锁public static synchronized SingletonLazy getInstance(){if(instancenull){instance new SingletonLazy();}return instance;} } 3、双检锁/双重校验锁DCL即 double-checked locking 我们使用 volatile 关键字, volatile 关键字可以保证可见性和有序性这个关键字禁止了对当前修饰的变量上下文重排序。保证了方法的可靠性。采用双锁机制安全且在多线程情况下能保持高性能。 进行二次判断的原因 假设有两个线程ab他们都去请求我们单例模式下类的实例当第一个判断的时候两个线程都会进入判断代码块中进行锁的抢占最终a抢占到了锁那么b只能在加锁的代码块外部进行等候。这个时候a创建了对象的实例完成功能后归还了锁这个时候线程b马上抢占到了锁然后进入内部代码块。假如没有第二次判断的话线程a就会再次创建一个新的对象导致线程不安全。所以要在这里再加一次判断。 /*** 懒汉式 双重校验锁*/ public class SingletonLazy {//定义一个私有构造方法private SingletonLazy(){}//创建该类对象private volatile static SingletonLazy instance;//对外提供静态方法获取该对象 , 加双重锁public static SingletonLazy getInstance(){if(instancenull){synchronized (instance.getClass()){if(instance null){instance new SingletonLazy();}}}return instance;} } 4、静态内部类方式-------只适用于静态域 静态内部类单例模式中实例由内部类创建由于 JVM 在加载外部类的过程中, 是不会加载静态内部类的只有内部类的属性/方法被调用时才会被加载并初始化其静态属性。静态属性由于被 static 修饰保证只被实例化一次并且严格保证实例化顺序。 /*** 静态内部类方式*/ public class SingletonLazy {//私有构造方法private SingletonLazy() {}//定义静态类private static class SingletonHolder {//静态方法private static final SingletonLazy INSTANCE new SingletonLazy();}//对外提供静态方法获取该对象public static SingletonLazy getInstance() {return SingletonHolder.INSTANCE;} } 5、饿汉式 它基于 classloader 机制避免了多线程的同步问题instance 在类装载时就实例化。 /*** 饿汉式*/ public class SingletonEhan {//私有构造方法private SingletonEhan(){}//创建并实例化该类对象private static SingletonEhan instance new SingletonEhan();//对外提供静态方法获取该对象public static SingletonEhan getInstance(){return instance;} } 6、枚举 这种实现方式还没有被广泛采用但这是实现单例模式的最佳方法。它更简洁自动支持序列化机制绝对防止多次实例化。 public enum Singleton { INSTANCE; public void whateverMethod() { } } 四、总结 一般情况下使用第5种饿汉式。
http://www.w-s-a.com/news/762852/

相关文章:

  • 合肥哪里有做网站的广告型网站怎么做的
  • 用dede做的网站国外免费空间哪个好
  • dede个人网站模板企点
  • 韩雪个人网站wordpress 怎么添加网站备案信息
  • 个人网站可以做地方技能培训班
  • 品牌营销策略研究无锡 网站 seo 优化
  • 在线推广网站的方法有哪些织梦网站首页目录在哪
  • 做爰全过程免费网站的视频做网站的几个步骤
  • cpa建站教程青海西宁制作网站企业
  • 简易的在线数据库网站模板网站多服务器建设
  • 成都seo网站建设花店网页模板html
  • 义乌市网站制作网络营销策略名词解释
  • 高端品牌网站建设图片wordpress 资源站主题
  • 上海建设工程监督总站网站电商网站wordpress
  • 网站建设 医院菏泽网站建设熊掌号
  • 成都网站建设企业预约网免费建站流程
  • 网站建设胶州中国政务网站建设绩效评估
  • 合肥知名网站推广胶东国际机场建设有限公司网站
  • asp.ney旅游信息网站下载 简洁濮阳微信网站开发
  • 建设网站专业怎么上传网站程序到空间
  • 县城乡建设局网站微商城小程序哪个好
  • 博物馆门户网站建设优势重庆seo排名系统运营
  • 哪有app制作公司上海seo排名
  • 长沙建站seo公司北京招聘信息
  • 建设网站情况说明范文四川个人证书查询网官网
  • 推广学校网站怎么做公司可以做多个网站吗
  • 游戏网站后台建设郑州定制网站
  • 商务公司网站建设网站建设如何自学
  • 现在建网站可以拖拉式的吗中国国内最新新闻
  • phpstorm网站开发产品logo设计