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

网站多语言建设方案网站建设课程改进建议

网站多语言建设方案,网站建设课程改进建议,手帐风格wordpress主题,建筑最吃香的专业目录 一、五种单例模式的实现方式 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.yayakq.cn/news/225003/

相关文章:

  • 公司建设个网站大成建设株式会社网站
  • 网站建设相关优化网店托管网
  • 网站开发岗位分析关键词优化软件有哪些
  • 海南省建设网站的公司上海外贸公司最新招聘
  • 网站开发技术文档包含51link友链
  • 建设部网站录入业绩电子商务网站建设ppt模板下载
  • 单页电影网站源码成都旅游景点排名前十
  • 微信小程序订单系统苏州seo排名
  • 做一手机网站需要多少钱宁波专业做网站的公司哪家好
  • 网站制作长春在小型网站建设小组中答案
  • 营销网站排行榜前十名大武口网站建设
  • c语言开发网站教程网络营销的案例
  • 博达网站建设流程wordpress手机版受钱吗
  • 网站建设顺德泗门网站建设
  • 简述建设网站的基本流程西服定制一般多少钱
  • 个人工作室和公司的区别珠海网站建设及优化
  • safari网站入口滨州网站建设 远洋科技
  • 网站开发老是弹广告中小企业建网站
  • 做期货看什么网站的资讯友情链接交易平台
  • 重庆 机械有限公司 沙坪坝网站建设返利网站开发计划书
  • 口碑好的常州做网站找外国女朋友的网站建设
  • 西安关键词网站排名在哪了做网站
  • 网站描述和关键词怎么写网页设计公司有专门做图的部门
  • 建设工程八大员考试网站f式布局网站
  • 成都网站建设推来客网站系统报价免费创网站
  • 平台式网站模板下载地址2345百度百科
  • 兰州企业做网站建立网站的主要步骤
  • 和规划网站如何wordpress 自动图片
  • 做网站 微信开发前景结婚证一键制作
  • 怎么在网络上做推广seo人员的职责