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

学校网站源码 带wap手机端wordpress谷歌字体大小

学校网站源码 带wap手机端,wordpress谷歌字体大小,公司法人变更流程,网站建设岗位廉政风险防控单例模式是23种设计模式中应用最广的模式之一#xff0c;其定义#xff1a;确保某一个类只有一个实例#xff0c;而且自行实实例化并向整个系统通过这个实例。其类图如下#xff1a; 通俗来说#xff0c;单例模式就是用于创建那些在软件系统中独一无二的对象。在一个软件系…单例模式是23种设计模式中应用最广的模式之一其定义确保某一个类只有一个实例而且自行实实例化并向整个系统通过这个实例。其类图如下 通俗来说单例模式就是用于创建那些在软件系统中独一无二的对象。在一个软件系统中往往无需创建多个实例。举个大家熟悉的例子— Windows任务管理器。有兴趣的可以试下按住Ctrl Alt Del然后在弹出的界面中选择任务管理器或者在菜单栏右键弹出菜单上多次点击启动任务管理器你会发现无论启动多少次Windows系统只会弹出一个任务管理器窗口这是日常生活最常见的单例模式应用之一。采用单例模式可以避免产生多个对象而导致消耗过多的资源问题比如要进行IO访问操作或便利查询数据库等这时单例模式就是一个较好的解决方案。 实现方式 1、构造方法属性改为private 2、通过一个静态方法返回一个全局单例类对象 3、在系统中无论何种情况下或在子线程中单例对象都只有一个不会重复创建单例对象。 而根据其实现方式细节不同又可分为以下几种 饿汉式 public class Singletion {private Singletion() {}private static final Singletion mInstance new Singletion();public static Singletion getInstance() {return mInstance;} }此方式在声明静态对象时就初始化在类装载ClassLoader时就构建也可以说预先加载通过static关键字修饰静态变量将其存储在内存中确保只有一份数据。 而final关键字使得只初始化一次所以mInstance实例只有一个。 此方式线程安全由于在类加载的同时就已经创建好一个静态对象所以调用时耗时短、速度快优点。 但也有可能getInstance()永远不会执行但执行该类的其他静态方法或者加载了该类class.forName)那么这个类仍然会初始化可能会浪费资源缺点。 懒汉式 public class Singletion {private Singletion() {}private static Singletion mInstance;public static synchronized Singletion getInstance() {if (mInstance null) {mInstance new Singletion();}return mInstance;} }该类在调用getInstance的时候使用才初始化但这里加了synchronized关键字就变成了一个同步方法。相较于饿汉式的“空间换时间”特点,懒汉式是“时间换空间”。 由于在使用时才会进行实例化可以说节省了系统资源优点 但每次调用getInstance都会同步一次浪费系统资源缺点。 双重检测加锁方式 public class Singletion {private Singletion() {}private volatile static Singletion mInstance;public static Singletion getInstance() {if (mInstance null) {synchronized (Singletion.class) { if (mInstance null) {mInstance new Singletion (); }}}return mInstance;} }这里使用 volatile 可以禁止 JVM 的指令重排保证在多线程环境下也能正常运行指令重排单线程环境不会出问题但是多线程场景下会导致一个线程获得还没有初始化的实例举个例子 ... private static Singletion mInstance; private Singletion() {} public static Singletion getInstance() {...} ...由于JVM是可以乱序执行方法的上面三句方法在执行过程可能出现下面场景 如果A线程执行getInstance(),还没执行构造方法Singletion()此时B线程调用getInstance()因为A线程已经执行了getInstance()所以mInstance不为空就直接获取到实例由于B线程直接获取而真实情况是A线程构造方法还未执行所以mInstance就为空了。 虽然概率较小但也有可能发生故JDK自1.6开始加入volatile关键字虽然必不可免的会消耗一些性能。 此方式资源利用率高不执行getInstance()就不会被实例可以执行该类的其他静态方法优点 但同时也存在第一次加载时较慢多线程使用会有不必要的同步开销的问题缺点。 静态内部类方式 class Singletion {private Singletion() {}private static class SingletonLoader {static Singletion mInstance new Singletion();}public static Singletion getInstance() {return SingletonLoader.mInstance;} }此类在调用getInstance的时候才初始化调用getInstance才会去加载SingletonLoader类确保了线程安全、单例的唯一性。 由此可见这种写法不执行getInstance()则不被实例化可以执行该类其他静态方法避免资源浪费优点 但第一次加载速度肯定不够快缺点。 总结 其实不管哪种实现方式其核心思想是一样的私有化构造方法然后通过静态方法返回唯一对象实例同时保证线程安全。 具体使用哪种方式要看应用场景。有的场景适合饿汉式有的对资源加载有要求的可以采用静态内部类方式。 其实Android系统中就有很多单例模式的运用包括日常的APP开发中的Application也是常见的单例模式。还有很多Context调用的系统服务等比如LayoutInflater服务。
http://www.zqtcl.cn/news/950651/

相关文章:

  • 企业网站建设范文wordpress 5.1
  • 网站 河北 备案 慢设计一个营销方案
  • 网站建设培训合肥品牌设计案例
  • 建网站注册免费云服务器
  • 可以做网站的公司有哪些聊天软件开发厂家有哪些
  • 正规网站建设公司一般要多少钱婚纱网站有哪些
  • 企业网站开发目的和意义住房和城乡建设厅官网查询
  • 直播一级a做爰片免费网站wordpress 模板 使用
  • 网站开发中期检查优质的菏泽网站建设
  • 建设网站号码在线html编辑
  • 品牌型网站制作有哪些公司石家庄广告制作公司
  • 做网站赚几百万网站效果图怎么做的
  • 哪些网站做企业招聘不要花钱wordpress底部导航代码
  • 怎么用链接进自己做的网站企业组织架构
  • 建设新网站征求意见网站设计佛山
  • 重庆建设造价工程信息网站东莞电商页面设计公司
  • 乔拓云智能建站官网登录入口怎么样做网站卖农产品
  • 怎么维护好网站网站的域名每年都要续费
  • 运动网站模板佛山三水区有没有网站建设公司
  • 申请微官网的网站国外域名注册商网站
  • 集团公司网站建设建设中学校园网站的来源
  • 产品展示网站含后台网站模板下载网站开发什么语言好
  • 做知乎网站的图片如何设计好网站
  • 广州企业网站推广织梦学校网站模板
  • 国内响应式网站案例深圳住房和城乡建设局网站
  • 网页制作网站首页中国建筑论坛网
  • 众创空间网站建设少年宫网站建设模块
  • 企业营销型网站的内容科技公司取名大全
  • 哈尔滨云建站模板投资公司的钱从哪里来
  • 海南做网站公司哪家好中国人做外贸生意的网站