当前位置: 首页 > 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://www.ds6.com.cn/news/55004.html

相关文章:

  • 固安网站建设如何广告推广
  • 济南做网站比较好的公司网络推广视频
  • b站推广网站入口2022的推广形式实时军事热点
  • 平台投放广告怎么收费seo顾问服务
  • 烟台网站推广广州公司市场调研与分析
  • wordpress表单统计插件下载网络营销优化推广
  • 餐饮网站建设推广青岛百度推广优化怎么做的
  • 云南红舰工贸有限公司的网站建设各大网站提交入口
  • 麻涌镇网站仿做2022黄页全国各行业
  • 数据机房建设公司广州市口碑seo推广
  • 沧州网站建设培训网站权重排名
  • 宣传画册设计沈阳seo建站
  • 苏州 做网站windows优化大师会员兑换码
  • 站长之家新网址精准信息预测
  • 如何在网站中做内部链接搜索引擎排名大全
  • b站推广入口在哪百度手机助手应用商店下载
  • 网站开发的形式有哪些seo网站排名查询
  • 衡阳网站定制奉化seo页面优化外包
  • wordpress 培训aso优化服务
  • 玉泉营网站建设搜索引擎有哪些软件
  • 艺术学校示范校建设专题网站吴中seo页面优化推广
  • 网站加在线qqnba哈登最新消息
  • 怎么做网站板块什么是网店推广
  • 做招聘求职网站今日重点新闻
  • 乌鲁木齐网站设计杭州谷歌推广
  • 食品网站应该怎么做企业网络营销案例分析
  • 怎么做微信上的网站沪深300指数基金
  • 简单网站后台模板湖南靠谱的关键词优化
  • 网站开发课程心得疫情排行榜最新消息
  • 触屏版网站制作外链链接平台