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

电脑网站首页设计网站总体设计

电脑网站首页设计,网站总体设计,滨河网站建设,做业精灵官方网站介绍什么是单例模式#xff1a;保证一个类仅有一个实例#xff0c;并提供一个访问它的全局访问点解决什么问题#xff1a;省略创建对象所花费的时间#xff0c;不需要频繁创建对象#xff0c;减轻 GC 压力。单例模式有以下几种实现方式#xff1a;懒汉式第一次使用的时候…介绍什么是单例模式保证一个类仅有一个实例并提供一个访问它的全局访问点解决什么问题省略创建对象所花费的时间不需要频繁创建对象减轻 GC 压力。单例模式有以下几种实现方式懒汉式第一次使用的时候才进行加载// 非线程安全public class Singleton {private Singleton(){}private static Singleton singleton;public static Singleton getSingleton(){if (singleton null){singleton new Singleton();}return singleton;}}// 加锁线程安全但是每次获取都会加锁判断public class Singleton {private Singleton(){}private static Singleton singleton;public static synchronized Singleton getSingleton(){if (singleton null){singleton new Singleton();}return singleton;}}饿汉式在类加载时就完成了初始化所以类加载较慢但获取对象的速度快。通过类加载机制保证单例但是如果代码中有其它方式导致类加载(反射、反序列化)就不满足单例public class Singleton {public static Singleton singleton new Singleton();private Singleton(){}public static getSingleton() {return singleton;}}双重校验(double check)public class Singleton {private Singleton(){}public static volatile Singleton singleton;public static getSingleton(){if (singleton null){synchronized(Singleton.class){if (singleton null){singleton new Singleton();}}}return singleton;}}第一次校验 singleton 是否为空是为了提高代码执行效率。单例模式只创建一次后面调用就不用加锁直接返回已创建的实例。第二次校验 singleton 是否为空是防止二次创建实例。线程 A 、线程 B 同时进入第一个判断之后线程 B 拿到锁创建了实例然后线程 A 拿到锁之后如果不加以判断就会再次创建实例。singleton 用 volatile 修饰是为了防止 JVM 指令重排序。singleton new Singleton() 分为以下 3 步步骤 3 可能在步骤 2 之前执行此时另外的线程发现 singleton 不为 null直接跳过第一个判断返回未初始化完全的对象就会出问题。分配内存空间初始化对象内存空间赋值给对应的引用静态内部类public class Singleton {private Singleton (){}private static class SingletonHolder {private static final Singleton INSTANCE new Singleton();}public static final Singleton getSingleton(){return SingletonHolder.INSTANCE;}}满足延迟加载Singleton 类被装载了instance 不一定被初始化只有通过显式调用 getInstance 方法时才会显式装载 SingletonHolder 类。对于类的初始化虚拟机规范则严格规定了有且只有四种情况必须立即对类进行初始化遇到 new、getStatic、putStatic 或 invokeStatic 这 4 条字节码指令时如果类没有进行过初始化则需要先触发其初始化。生成这4条指令最常见的 java 代码场景是1)使用 new 关键字实例化对象2)读取一个类的静态字段(被final修饰、已在编译期把结果放在常量池的静态字段除外)3)设置一个类的静态字段(被final修饰、已在编译期把结果放在常量池的静态字段除外)4)调用一个类的静态方法执行类的初始化期间JVM 会获取一个锁同步多个线程对同一个类的初始化所以可以保证线程安全这种方式只适用于静态域的情况静态内部类只能访问外部类的静态成员变量。枚举public enum Singleton {INSTANCE;public void doSomeThing() {}}参考双重检查锁定与延迟初始化-InfoQ​www.infoq.cn面试官所认为的单例模式 - 掘金​juejin.im
http://www.huolong8.cn/news/402171/

相关文章:

  • 专业电容层析成像代做网站企业vi设计书籍
  • 自己如何高效有力的维护一个网站如何用域名访问网站
  • 如何做网站关键词霸屏世界十大互联网公司排名
  • 怎么做废品收购网站wordpress您访问的网页出错
  • 网站实现用户登录app开发需要哪些技能
  • 麻城网站设计网站诚信建设
  • 建设行业公司网站国外seo工具
  • 怎么把网站做成手机网站天津网站建设公司电扬
  • 局网站建设再上新台阶土木在线
  • 江苏网站建站系统哪家好建设工程投标文件在哪个网站有发布
  • 网站 运营长沙做网站智投未来
  • 重庆装修公司大全江苏网站关键词优化优化
  • 医疗类网站29网站建设全部
  • 东莞住房建设网站的网四川省工程建设管理协会网站
  • 商城网站开发 多少钱做传媒网站公司名称
  • 江苏品牌网站设计it外包抽成
  • 带端口的服务器怎么做网站有什么网站交互做的很好 知乎
  • 移动网站推广网站设置在哪里找
  • 行业网站排名查询网站的管理页面
  • 搜索网站开发背景做网站内存最小源码
  • 怎样用模块做网站山西手机网站建设
  • 可以做推送的网站深圳自建站有哪些大公司
  • 技术支持 淄博网站建设我的网站为什么
  • 怎样架设网站软件开发用什么工具
  • 朝阳市营商环境建设监督局网站vis设计
  • 网站网页怎么做想开个网站建设的公司
  • 网站做多个镜像企业建网站报价
  • 做网站要找什么长沙民企人才网
  • 网站主机教程上海 网站建设公司
  • 苏州微信网站建设服装设计公司排名前十强