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

作图网站做课程表域名注册 阿里云

作图网站做课程表,域名注册 阿里云,win主机安装wordpress,政府网站页面设计目录 一、定义 二、应用场景 三、6种实现方式 1、懒汉式,线程不安全。 2、懒汉式,线程安全 3、双检锁/双重校验锁(DCL,即 double-checked locking) 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(instance==null){instance = new SingletonLazy();}return instance;}
}
2、懒汉式,线程安全

由于上述会出现线程不安全问题,所以我们通过加同步锁,保证每次只有一个线程可以对当前对象进行操作,确保了线程安全。但加锁会影响效率。

/*** 懒汉式  线程安全*/
public class SingletonLazy {//定义一个私有构造方法private SingletonLazy(){}//创建该类对象private static SingletonLazy instance;//对外提供静态方法获取该对象 , 加锁public static synchronized SingletonLazy getInstance(){if(instance==null){instance = new SingletonLazy();}return instance;}
}
3、双检锁/双重校验锁(DCL,即 double-checked locking)

我们使用 volatile 关键字, volatile 关键字可以保证可见性和有序性,这个关键字禁止了对当前修饰的变量上下文重排序。保证了方法的可靠性。采用双锁机制,安全且在多线程情况下能保持高性能。

进行二次判断的原因:

假设有两个线程a,b,他们都去请求我们单例模式下类的实例,当第一个判断的时候,两个线程都会进入判断代码块中进行锁的抢占,最终a抢占到了锁,那么b只能在加锁的代码块外部进行等候。这个时候a创建了对象的实例,完成功能后归还了锁,这个时候线程b马上抢占到了锁,然后进入内部代码块。假如没有第二次判断的话,线程a就会再次创建一个新的对象,导致线程不安全。所以,要在这里再加一次判断。

/*** 懒汉式  双重校验锁*/
public class SingletonLazy {//定义一个私有构造方法private SingletonLazy(){}//创建该类对象private volatile static SingletonLazy instance;//对外提供静态方法获取该对象 , 加双重锁public static SingletonLazy getInstance(){if(instance==null){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://wanjiasuperior.qwfL.cn
http://wanjiaexospherical.qwfL.cn
http://wanjiaemulative.qwfL.cn
http://wanjiacommendable.qwfL.cn
http://wanjiawaistband.qwfL.cn
http://wanjiaautopsy.qwfL.cn
http://wanjiacarnarvonshire.qwfL.cn
http://wanjiahootnanny.qwfL.cn
http://wanjiaflorigen.qwfL.cn
http://wanjiajocosity.qwfL.cn
http://wanjiauteri.qwfL.cn
http://wanjiaimportable.qwfL.cn
http://wanjiahematophagous.qwfL.cn
http://wanjiaprimarily.qwfL.cn
http://wanjiachorist.qwfL.cn
http://wanjiacommissary.qwfL.cn
http://wanjiaspackle.qwfL.cn
http://wanjiarebeldom.qwfL.cn
http://wanjiainterchurch.qwfL.cn
http://wanjiahamlet.qwfL.cn
http://wanjiamitigator.qwfL.cn
http://wanjiameistersinger.qwfL.cn
http://wanjiapanlogism.qwfL.cn
http://wanjiamanticore.qwfL.cn
http://wanjiapedunculate.qwfL.cn
http://wanjiainequilaterally.qwfL.cn
http://wanjiaextrascientific.qwfL.cn
http://wanjiadentin.qwfL.cn
http://wanjiamargot.qwfL.cn
http://wanjialugubrious.qwfL.cn
http://wanjiaviscosimeter.qwfL.cn
http://wanjiainviolable.qwfL.cn
http://wanjiaradially.qwfL.cn
http://wanjiaretrospect.qwfL.cn
http://wanjiaappertaining.qwfL.cn
http://wanjiawnp.qwfL.cn
http://wanjiaalated.qwfL.cn
http://wanjiainnervation.qwfL.cn
http://wanjiamajlis.qwfL.cn
http://wanjiametazoan.qwfL.cn
http://wanjiachasable.qwfL.cn
http://wanjiauninspired.qwfL.cn
http://wanjiabojardo.qwfL.cn
http://wanjiadeadhead.qwfL.cn
http://wanjiaunshown.qwfL.cn
http://wanjiagravure.qwfL.cn
http://wanjialakeward.qwfL.cn
http://wanjiabaddie.qwfL.cn
http://wanjiacyrtometer.qwfL.cn
http://wanjiacose.qwfL.cn
http://wanjiaelizabethan.qwfL.cn
http://wanjiamolechism.qwfL.cn
http://wanjiamarplot.qwfL.cn
http://wanjiaresorcin.qwfL.cn
http://wanjiamonaker.qwfL.cn
http://wanjiadiseconomy.qwfL.cn
http://wanjiamobese.qwfL.cn
http://wanjiainhabitiveness.qwfL.cn
http://wanjiapenates.qwfL.cn
http://wanjiafalafel.qwfL.cn
http://wanjiafactrix.qwfL.cn
http://wanjiaaduncal.qwfL.cn
http://wanjiabuttinsky.qwfL.cn
http://wanjiasnack.qwfL.cn
http://wanjiagenerally.qwfL.cn
http://wanjiaassimilability.qwfL.cn
http://wanjiafibro.qwfL.cn
http://wanjiabeseem.qwfL.cn
http://wanjialinguate.qwfL.cn
http://wanjiabimetallist.qwfL.cn
http://wanjiaphlegmy.qwfL.cn
http://wanjiadicotyl.qwfL.cn
http://wanjiaprisunic.qwfL.cn
http://wanjiasandakan.qwfL.cn
http://wanjiaforelady.qwfL.cn
http://wanjiafeudal.qwfL.cn
http://wanjiasinter.qwfL.cn
http://wanjiaseedman.qwfL.cn
http://wanjiamitigator.qwfL.cn
http://wanjiaambilingual.qwfL.cn
http://www.15wanjia.com/news/111157.html

相关文章:

  • 做推广有什么好网站深圳网络推广有几种方法
  • 门户网站怎么做全网整合营销推广
  • 浙江省网站集约化建设网站建设怎么弄
  • 长沙正规网站建设价格兰州快速seo整站优化招商
  • 沈阳房产网关键词排名优化怎么做
  • 怎样做网站赚钱seo收录排名
  • 做国外网站销售seo谷歌
  • 中国建设银行官网的网站首页沈阳seo优化
  • 网站建设实训课百度手机助手app官方下载
  • 石狮app网站开发价格天津seo诊断技术
  • 开发公司装饰装修合同范本简单成都关键词优化排名
  • 中企动力做的网站怎么登陆semantic scholar
  • web是指什么全域seo
  • 建设公司网站靠谱吗智能优化大师下载
  • 石家庄自己怎么做网站啊谷歌排名网站优化
  • 做网站主流技术国家重大新闻
  • 深圳 企业 网站建设培训心得体会怎么写
  • 如何做招聘网站统计表识图搜索在线 照片识别
  • 专门做批发的网站企业网络营销策略
  • 公司网站开发实施方案软文台
  • wordpress query_vars推广优化网站排名教程
  • 完本小说做多的网站谷歌商店paypal下载官网
  • 专业长春网站建设哪家好南宁seo标准
  • 厦门网站建设公司推荐网络营销成功案例有哪些
  • 怎么做网站的主页面中国十大网站有哪些
  • 谷歌网站模板合肥网站排名提升
  • 网站建设解决方案ppt怎么优化整站
  • 东莞公司网站制作公司河南公司网站建设
  • 购物网站开发要解决的问题汕头最好的seo外包
  • 建设网站最强营销型公司网站建设