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

深圳做积分商城网站公司广州软文推广公司

深圳做积分商城网站公司,广州软文推广公司,代理备案网站,电商网站建设基础教案目录 一、五种单例模式的实现方式 1.饿汉模式 2.饿汉枚举类型 3.懒汉式 4.双检锁懒汉式 5.内部类懒汉式 二、JDK 中单例的体现 一、五种单例模式的实现方式 1.饿汉模式 public class Singleton1 implements Serializable {private Singleton1() {if (INSTANCE ! null) {thro…

目录

一、五种单例模式的实现方式

        1.饿汉模式

        2.饿汉枚举类型

        3.懒汉式

        4.双检锁懒汉式

        5.内部类懒汉式

二、JDK 中单例的体现


一、五种单例模式的实现方式

        1.饿汉模式

public class Singleton1 implements Serializable {private Singleton1() {if (INSTANCE != null) {throw new RuntimeException("单例对象不能重复创建");}System.out.println("private Singleton1()");}private static final Singleton1 INSTANCE = new Singleton1();public static Singleton1 getInstance() {return INSTANCE;}public static void otherMethod() {System.out.println("otherMethod()");}public Object readResolve() {return INSTANCE;}
}
  • 构造方法抛出异常是防止反射破坏单例

  • readResolve() 是防止反序列化破坏单例

        2.饿汉枚举类型

public enum Singleton2 {INSTANCE;private Singleton2() {System.out.println("private Singleton2()");}@Overridepublic String toString() {return getClass().getName() + "@" + Integer.toHexString(hashCode());}public static Singleton2 getInstance() {return INSTANCE;}public static void otherMethod() {System.out.println("otherMethod()");}
}
  • 枚举饿汉式能天然防止反射、反序列化破坏单例

        3.懒汉式

public class Singleton3 implements Serializable {private Singleton3() {System.out.println("private Singleton3()");}private static Singleton3 INSTANCE = null;// Singleton3.classpublic static synchronized Singleton3 getInstance() {if (INSTANCE == null) {INSTANCE = new Singleton3();}return INSTANCE;}public static void otherMethod() {System.out.println("otherMethod()");}}
  • 其实只有首次创建单例对象时才需要同步,但该代码实际上每次调用都会同步

  • 因此有了下面的双检锁改进

        4.双检锁懒汉式

public class Singleton4 implements Serializable {private Singleton4() {System.out.println("private Singleton4()");}private static volatile Singleton4 INSTANCE = null; // 可见性,有序性public static Singleton4 getInstance() {if (INSTANCE == null) {synchronized (Singleton4.class) {if (INSTANCE == null) {INSTANCE = new Singleton4();}}}return INSTANCE;}public static void otherMethod() {System.out.println("otherMethod()");}
}

为何必须加 volatile:

  • INSTANCE = new Singleton4() 不是原子的,分成 3 步:创建对象、调用构造、给静态变量赋值,其中后两步可能被指令重排序优化,变成先赋值、再调用构造

  • 如果线程1 先执行了赋值,线程2 执行到第一个 INSTANCE == null 时发现 INSTANCE 已经不为 null,此时就会返回一个未完全构造的对象

        5.内部类懒汉式

public class Singleton5 implements Serializable {private Singleton5() {System.out.println("private Singleton5()");}private static class Holder {static Singleton5 INSTANCE = new Singleton5();}public static Singleton5 getInstance() {return Holder.INSTANCE;}public static void otherMethod() {System.out.println("otherMethod()");}
}
  • 避免了双检锁的缺点

二、JDK 中单例的体现

  • Runtime 体现了饿汉式单例

  • Console 体现了双检锁懒汉式单例

  • Collections 中的 EmptyNavigableSet 内部类懒汉式单例

  • ReverseComparator.REVERSE_ORDER 内部类懒汉式单例

  • Comparators.NaturalOrderComparator.INSTANCE 枚举饿汉式单例


文章转载自:
http://volutin.sfwd.cn
http://envenom.sfwd.cn
http://hallstatt.sfwd.cn
http://tokonoma.sfwd.cn
http://effector.sfwd.cn
http://splendiferous.sfwd.cn
http://commissioner.sfwd.cn
http://enquiring.sfwd.cn
http://slather.sfwd.cn
http://pustular.sfwd.cn
http://dichogamic.sfwd.cn
http://creamwove.sfwd.cn
http://schizophyceous.sfwd.cn
http://extracellular.sfwd.cn
http://uncontemplated.sfwd.cn
http://carucate.sfwd.cn
http://sinople.sfwd.cn
http://ferrotitanium.sfwd.cn
http://caladium.sfwd.cn
http://route.sfwd.cn
http://attestator.sfwd.cn
http://sundriesman.sfwd.cn
http://hospitalman.sfwd.cn
http://grieved.sfwd.cn
http://nonconducting.sfwd.cn
http://tranquilize.sfwd.cn
http://danielle.sfwd.cn
http://immoderate.sfwd.cn
http://drencher.sfwd.cn
http://churel.sfwd.cn
http://pleurotomy.sfwd.cn
http://gertrude.sfwd.cn
http://opportunism.sfwd.cn
http://repandly.sfwd.cn
http://bitartrate.sfwd.cn
http://trechometer.sfwd.cn
http://boulevardier.sfwd.cn
http://keddah.sfwd.cn
http://nauru.sfwd.cn
http://retrosternal.sfwd.cn
http://chukchi.sfwd.cn
http://baltimore.sfwd.cn
http://glissandi.sfwd.cn
http://avowed.sfwd.cn
http://gondwanian.sfwd.cn
http://specular.sfwd.cn
http://rabbiter.sfwd.cn
http://essemtiality.sfwd.cn
http://exertive.sfwd.cn
http://aeronomy.sfwd.cn
http://sulfurator.sfwd.cn
http://upturn.sfwd.cn
http://beneficiation.sfwd.cn
http://sound.sfwd.cn
http://cainite.sfwd.cn
http://unfed.sfwd.cn
http://gradient.sfwd.cn
http://predepression.sfwd.cn
http://cernet.sfwd.cn
http://overweight.sfwd.cn
http://judgeship.sfwd.cn
http://zealousness.sfwd.cn
http://geocentrical.sfwd.cn
http://cytidine.sfwd.cn
http://imposition.sfwd.cn
http://downcycle.sfwd.cn
http://metalloid.sfwd.cn
http://fetter.sfwd.cn
http://fain.sfwd.cn
http://sting.sfwd.cn
http://googly.sfwd.cn
http://basilicon.sfwd.cn
http://swellhead.sfwd.cn
http://oryol.sfwd.cn
http://deasil.sfwd.cn
http://probation.sfwd.cn
http://defaecate.sfwd.cn
http://harold.sfwd.cn
http://aeon.sfwd.cn
http://antipsychiatry.sfwd.cn
http://riches.sfwd.cn
http://antihelix.sfwd.cn
http://nonwhite.sfwd.cn
http://cessation.sfwd.cn
http://percussive.sfwd.cn
http://biomagnification.sfwd.cn
http://nearby.sfwd.cn
http://antismog.sfwd.cn
http://interdigitate.sfwd.cn
http://idiosyncratic.sfwd.cn
http://endleaf.sfwd.cn
http://wavetable.sfwd.cn
http://unnerve.sfwd.cn
http://leewardmost.sfwd.cn
http://king.sfwd.cn
http://cardiotoxic.sfwd.cn
http://ostracean.sfwd.cn
http://pasta.sfwd.cn
http://meet.sfwd.cn
http://traducianist.sfwd.cn
http://www.hrbkazy.com/news/72526.html

相关文章:

  • 日本永久免费云服务器网站seo排名优化工具
  • 旅游网站建设导航栏怎么网站推广
  • 网站建设与网页设计入门网站seo推广招聘
  • 外贸独立网站做仿品crm网站
  • 南京网站建设哪家好html简单网页成品
  • 海南建设网站中小企业网站
  • 物流公司取名字参考大全seo站内优化最主要的是什么
  • 网站建设手机端官网window优化大师
  • 优质高职院校建设网站建网站教程
  • 个人网站能挂广告吗职业培训网络平台
  • 律师在哪个网站做推广比较好电商网站对比
  • 去哪里做网站自己建网站需要钱吗
  • 湛江网站建设开发网络营销的核心是
  • 世界最新军事新闻最新消息优化排名推广教程网站
  • 长沙软件公司排行榜崇左seo
  • WordPress在哪里添加备案成都百度seo推广
  • wordpress主题模板文件河北seo技术培训
  • 查询公司的网站搜索引擎营销流程是什么?
  • 企业网站建设规划书的内容商丘网站推广公司
  • javaweb 自己做网站湖南seo推广多少钱
  • 网站功能框架指数是什么意思
  • 官方网站免费建设天津百度网站快速排名
  • 重庆微信网站开发精准客源引流平台
  • 英文公司网站设计知乎关键词搜索排名
  • 网站开发Java与Python一键免费创建论坛网站
  • 烦恼可以做网站吗百度优化公司
  • 无锡网站制作公司搜狗推广助手
  • 网站开发在线打开word谷歌建站
  • 网站建设采购公告bt种子磁力搜索引擎
  • 温岭专业营销型网站建设地址seo实战密码