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

做军事网站的项目背景大连市工程建设项目联合审批平台

做军事网站的项目背景,大连市工程建设项目联合审批平台,做网站客户给不了素材,登陆建设银行网站异常一、单例模式 单例模式(Singleton Pattern)是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点来访问这个唯一实例。 单例模式中: 这个类只能有一个实例这个类必须自己创建自己的唯一实例这个类必须…

一、单例模式

  单例模式(Singleton Pattern)是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点来访问这个唯一实例。

  单例模式中:

  • 这个类只能有一个实例
  • 这个类必须自己创建自己的唯一实例
  • 这个类必须向外提供访问其唯一实例的方式

二、Java中单例模式的实现方式

  Java中常见的单例模式实现方式有五种:

1.饿汉式(Eager Initialization)

  饿汉式在类加载时就创建单例对象,所以在调用时不需要再创建对象,直接使用即可。这种实现方式比较简单,但在某些情况下可能会造成资源的浪费。

public class SingletonEager {private static final SingletonEager INSTANCE = new SingletonEager();private SingletonEager() {}public static SingletonEager getInstance() {return INSTANCE;}
}
2.懒汉式(Lazy Initialization)

  懒汉式在调用时才创建单例对象,这种实现方式避免了资源浪费,但会有线程安全问题。

public class SingletonLazyUnsafe {private static SingletonLazyUnsafe instance;private SingletonLazyUnsafe() {}public static SingletonLazyUnsafe getInstance() {if (instance == null) {instance = new SingletonLazyUnsafe();}return instance;}
}// 注意:懒汉式在多线程环境下是不安全的

  

3.双重检查锁定(Double-Check Locking)

  双重检查锁定是在懒汉式的基础上加入了双重检查锁机制,可以保证线程安全。

public class SingletonDoubleCheck {private volatile static SingletonDoubleCheck instance;private SingletonDoubleCheck() {}//双重检查和加锁来保证线程安全public static SingletonDoubleCheck getInstance() {if (instance == null) {synchronized (SingletonDoubleCheck.class) {if (instance == null) {instance = new SingletonDoubleCheck();}}}return instance;}
}
4.静态内部类(Static Inner Class)

  静态内部类这个方式是将单例对象作为静态内部类的一个静态变量,这种实现方式既可以保证线程安全,又可以实现懒加载。其实现原理是:外部类加载时,并不会立刻加载内部类,内部类不被加载,就不会去创建实例,只有当getInstance方法被调用时,才会加载内部类去创建实例(而且类加载的过程,在JVM中是被设计成线程安全的),所以既保证线程安全又实现了懒加载。

public class SingletonStaticInner {private SingletonStaticInner() {}private static class SingletonHolder {private static final SingletonStaticInner INSTANCE = new SingletonStaticInner();}public static SingletonStaticInner getInstance() {return SingletonHolder.INSTANCE;}
}

5.枚举(Enumeration)

  枚举是实现单例模式的最佳方式,将单例对象定义为一个枚举类型,这种实现方式可以保证线程安全,同时也可以防止反射、反序列化破坏单例模式。

public enum SingletonEnum {INSTANCE;// 定义方法或属性public void someMethod() {// ...}
}// 使用
SingletonEnum.INSTANCE.someMethod();

注意:除了枚举方式,前面四种方式实现的单例模式都存在反射和反序列化破坏单例的问题

  (在不做额外处理的情况下,通过反射可以突破构造方法的私有化限制,强行创建新的实例。而在反序列化时,可能会生成新的对象实例,而不是保持原有的单例状态。)


http://www.yayakq.cn/news/16351/

相关文章:

  • 龙岩e网站中职网站建设与维护考试题
  • 网站建设服务合同需要哪些资料广告网站模板
  • 鼓楼福州网站建设北京旧房改造装修哪家好
  • 企业网站制作免费下载做微信网站公司
  • 甘肃手机版建站系统价格品牌vi设计有哪些内容
  • 网站建设现在主要做些什么cn域名网站
  • 怎么做一个网站app吗事业单位门户网站建设评价
  • 曲靖做网站公司wordpress电商平台搭建
  • 如何给一个网站做压测品牌建设口号
  • 动图制作网站青海建设厅通报网站
  • 国外企业网站设计欣赏重庆官方网站查询系统
  • 上海网站建设永灿14年品牌网站排名提升易下拉教程
  • 教做发绳的网站提供手机自适应网站公司
  • 网站建设需求方案wordpress0商业网站
  • 做网站都需要学什么语言长宁网站推广公司
  • jsp做购物网站技术可行性简单企业网站
  • 网站系统jsp模板做网站的价格
  • 洛阳网站建设找洛阳铭信网络旅游网站开发毕业设计
  • 网站开发 英语学美工难吗
  • 网页毕业设计作品广州网站优化方案
  • 宁波北仑网站建设花瓣网设计网站
  • 衡阳城乡建设局网站2019建设什么网站好运营
  • 网站建设合同补充内容外包加工网下载
  • 自助搭建网站婚礼策划网站
  • 北京南站最新消息电子商务网站建设的主页
  • 网站策划网wordpress大道至简
  • 微信如何做积分商城网站网站建设客户管理系统
  • 亦庄做网站上海网络营销推广服务
  • 做自己的网站给人的启发包括哪些内容
  • 资讯文章类网站织梦模板做网站想要中立