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

做wps的网站赚钱成品网站怎么新建网页

做wps的网站赚钱,成品网站怎么新建网页,做网站建设需要会哪些,海外推广面试问题目录 一、什么是单例模式 二、饿汉模式 三、懒汉模式 一、什么是单例模式 单例模式是Java中的设计模式之一#xff0c;能够保证某个类在程序中只存在唯一一份实例#xff0c;而不会创建出多个实例 单例模式有很多实现方式#xff0c;最常见的是饿汉和懒汉两种模式 二、…目录 一、什么是单例模式 二、饿汉模式 三、懒汉模式 一、什么是单例模式 单例模式是Java中的设计模式之一能够保证某个类在程序中只存在唯一一份实例而不会创建出多个实例 单例模式有很多实现方式最常见的是饿汉和懒汉两种模式 二、饿汉模式 饿汉模式在类加载时就创建实例 如何实现饿汉式单例模式 1. 在类中完成实例的初始化在创建的类中创建唯一实例 2. 对外提供获取该唯一实例的方法提供访问该实例的全局静态方法getInstance()来获取该类的唯一实例 3. 构造方法私有化保证类外部不能实例化只有在类中创建的唯一实例 //饿汉式单例模式 public class HungrySingLeton {//在类中创建唯一实例private static final HungrySingLeton instance new HungrySingLeton();//构造方法私有化保证类外部不能进行实例化private HungrySingLeton(){}//对外提供获取该唯一实例的方法public static HungrySingLeton getInstance(){return instance;} } 饿汉式单例模式线程安全吗 饿汉式单例模式在类加载时就进行初始化创建唯一实例。它在线程还没出现之前就实例化了外部只能通过getInstance()方法来获取唯一实例相当于“读操作”因此是线程安全的 饿汉式单例模式的缺点 在类加载时就创建实例并一直在内存中若不使用该实例该实例仍然存在此时存在内存浪费问题 三、懒汉模式 类加载时不创建实例直到第一次使用的时候才创建实例 如何实现懒汉模式 懒汉模式的实现与饿汉模式类似唯一的区别是懒汉模式直到第一次使用的时候才会创建实例 1. 在类中创建唯一实例并将该实例的初始值设为null 2. 对外提供获取该唯一实例的方法若是第一次使用该方法则创建实例 3.  构造方法私有化保证类外部不能实例化只有在类中创建的唯一实例 public class LazySingleton {//在类中创建唯一实例,并将其置为nullprivate static LazySingleton instance null;//构造方法私有化保证类外部不能进行实例化private LazySingleton(){}//对外提供获取该唯一实例的方法public static LazySingleton getInstance(){//若是第一次使用该方法则初始化instanceif (instance null){instance new LazySingleton();}return instance;}}懒汉模式线程安全吗 在多线程情况下可能会出现创建多个实例的情况 如何解决线程安全问题 通过加锁来解决线程安全问题 将判断instance是否为空和创建实例两个操作加上锁或是直接在方法上加上synchronized从而保证在上图的情况下也只创建一个实例 public static LazySingleton getInstance(){synchronized (LazySingleton.class){//若是第一次使用该方法则初始化instanceif (instance null){instance new LazySingleton();}}return instance;} 或 public synchronized static LazySingleton getInstance(){//若是第一次使用该方法则初始化instanceif (instance null){instance new LazySingleton();}return instance;} 此时 由于加锁和解锁开销较高而懒汉式单例模式仅在第一次调用时才会存在可能创建多个实例的问题在后面调用getInstance()方法时判断instance不为空直接返回instance而在加锁后无论是否已经存在实例在多线程情况下都会发生阻塞此时存在执行效率低的问题 因此在加锁前判断是否已经创建实例若已经创建实例则直接返回instance若未创建实例则进行加锁操作 public static LazySingleton getInstance(){//判断是否已经创建实例若已经创建实例则不加锁直接返回instanceif(instance null){//若实例未创建则向下执行来竞争锁//竞争成功的锁进行创建实例操作synchronized (LazySingleton.class){//在竞争成功的锁创建实例并释放锁后//其他竞争到锁的线程被内层if挡住不会创建多个实例if (instance null){instance new LazySingleton();}}}return instance;} 通过两个if条件判断降低了锁竞争的频率既保证了线程安全又提高了执行效率 此时线程安全了吗 此时指令重排序也可能引起线程安全问题 指令重排序是编译器优化的一种方式通过调整原有代码的执行顺序在保证逻辑不变的前提下提高程序的效率 在创建实例时可将其分为三个步骤 1. 申请一段内存空间 2. 在该内存空间上调用构造方法创建出实例 3. 将该内存地址赋值给instance引用变量 正常情况下创建实例是按照1 2 3的顺序来执行的而编译器也可能会将其优化为1 3 2的顺序来执行 而当按照1 3 2 的方式来创建实例时就可能会出现问题 如何解决指令重排序带来的线程安全问题 使用volatile  volatile能够禁止指令重排序从而保证创建实例时按照1 2 3的顺序来创建出实例保证创建出初始化的实例 public class LazySingleton {//在类中创建唯一实例,并将其置为null//volatile:禁止指令重排序private volatile static LazySingleton instance null;//构造方法私有化保证类外部不能进行实例化private LazySingleton() {}//对外提供获取该唯一实例的方法public static LazySingleton getInstance() {//判断是否已经创建实例若已经创建实例则不加锁直接返回instanceif (instance null) {//若实例未创建则向下执行来竞争锁//竞争成功的锁进行创建实例操作synchronized (LazySingleton.class) {//在竞争成功的锁创建实例并释放锁后//其他竞争到锁的线程被内层if挡住不会创建多个实例if (instance null) {instance new LazySingleton();}}}return instance;} }懒汉模式在类加载时并没有进行实例化而是在第一次调用getInstance()方法的时候才进行实例化。若一直没有调用getInstance()方法则不创建该唯一实例此时节省了实例化的开销
http://www.pierceye.com/news/339505/

相关文章:

  • 网页开发网站宜昌网站seo
  • 网站做国际化网站服务器及运营维护公告
  • 潍坊网站开发招聘信息只做乡村旅游的网站
  • 什么网站可以做二建的题目汕尾网站网站建设
  • 如何用wampp 做网站网店seo
  • 新乡企业网站建设公司长安网站建设多少钱
  • 九亭镇村镇建设办官方网站工作简历模板电子版免费
  • 有保障的无锡网站制作wordpress怎么映射到外网访问不了
  • 邯郸网站设计怎么做移动网站 用户体验
  • 实验报告网站建设与网页制作oa系统是什么
  • 信息发布网站开发模板提高网站响应速度
  • 本科网站开发毕业设计贵阳平台网站建设
  • 安徽省建设厅网站打不开杭州建设网 执法人员名单
  • 外贸网站建站公司如何做滴滴网站平台
  • 淄博张店做网站的公司建筑设计公司资质等级
  • 一个网站的建设需要哪些流程图eclipse的开发网站开发
  • 网站链接跳转怎么做建立数据库连接时出错wordpress
  • 漳州网站建设选博大不错江苏省建设工程注册中心网站
  • 文件下载网站源码免费做网站空间
  • 怎样给公司做一个网站做推广新网域名管理平台
  • 新蔡县做网站收多少钱二级分销利润分配模式
  • 鞍山百度网站怎么制作python培训视频教程
  • 湛江网站建设与网页网站建设需要什么证件
  • 东莞建站公司案例全网天下案例wordpress入门教程知乎
  • 网站策划书包含的内容化工设计网站
  • 做网站推广电话网站建设制作免费推广
  • 如何发布网站响应式商城网站
  • 网站建设应用程序开发网站建设的意义以及重要性
  • 网站建设进度说明嘉兴公司制作网站的
  • 山东省建设注册管理网站手机免费网站制作