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

网站建设用户需求建设工程造价管理

网站建设用户需求,建设工程造价管理,女教师遭网课入侵直播录屏曝,ui平面设计单列模式是一种经典的设计模式#xff0c;在校招中最乐意考的设计模式之一~ 设计模式就是软件开发中的棋谱#xff0c;大佬们针对一些常见的场景#xff0c;总结出来的代码的编写套路#xff0c;按照套路来写#xff0c;不说你写的多好#xff0c;至少不会太差~ 在校招中…单列模式是一种经典的设计模式在校招中最乐意考的设计模式之一~ 设计模式就是软件开发中的棋谱大佬们针对一些常见的场景总结出来的代码的编写套路按照套路来写不说你写的多好至少不会太差~ 在校招中主要考察两个设计模式单列模式工厂模式 本文主要讲解单列模式 单列《——》单列模式instance)对象 一个程序中某个类只创建出一个实列对象——》不能创建多个对象 Java中的单列模式借助Java语法保证某个类只能创建出一个实列而不能new多次有些场景本身就是要求某个概念是单列的 在Java语法中如何做出单列模式的实现呢 Java中实现单列模式的有很多种写法起码有5/6种写法但是课堂上主要说两种 饿汉模式饥饿懒汉模式从容 饿汉吃完饭就立刻去洗碗 懒汉吃完饭之后先把碗放到一边等到下一顿吃的时候需要用到碗了再洗通常认为懒汉模式更好效率更高 比如中午吃饭用了4个碗 饿汉吃完就得把4个碗都洗了 懒汉晚上吃饭只用2个碗此时只需要洗2个就ok了 计算机中的列子打开一个硬盘上的文件读取文件内容并显示出来 饿汉把文件所有的内存都读到内存中并显示出来 懒汉只把文件读一小部分把当前屏幕填充上如果用户翻页了在读其他文件内容如果不翻页就省下了 假设文件非常大10G 饿汉模式文件可能卡半天内存够不够 懒汉模式可以快速打开 我们来看一下下述代码吧饿汉模式 class Singleton{//唯一的实体private static Singleton instancenew Singleton();//获取到实列的方法public static Singleton getInstance(){return instance;//单词的读操作不涉及修改}//禁止外部new实列//此处在类内部把实列创建好同时禁止外部重新创建实列此时就可以保证是单列的特性了private Singleton(){//构造方法设为private//仅类内部使用} }public class Main {public static void main(String[] args) {//此时s1和s2是同一个对象Singleton s1Singleton.getInstance();Singleton s2Singleton.getInstance();//Singleton s3new Singleton();//此处要把new操作禁止掉则把该类的构造方法设为private即可} }上述代码是线程安全的饿汉模式先创建好实列随去随用~ private static Singleton instancenew Singleton(); 在上述的该段代码中被static修饰该属性是类的熟悉JVM中每个类的类对象只有唯一一份类对象里的这个成员自然也是唯一的 但是对于创建的这个实列我们可以用不到因此非必要不创建《——》懒汉模式 懒汉模式的核心思想——》非必要不创建 //通过懒汉模式实现一下单列模式 class SingletonLazy{volatile private static SingletonLazy instancenull;//先置为空//只有调用getInstance才会new一个对象如果再次调用getInstance仍然会返回之前的实列public static SingletonLazy getInstance(){//这个条件判定是否需要加锁如果对象已经有了//就不必加锁了此时本身就是线程安全的if (instancenull){synchronized (SingletonLazy.class){//加锁保证判定和new是一个原子操作if (instancenull){instancenew SingletonLazy();}}}return instance;//唯一}private SingletonLazy(){//构造方法设为private//类中可以访问类外不能访问} }public class Main1 {public static void main(String[] args) {SingletonLazy s1SingletonLazy.getInstance();SingletonLazy s2SingletonLazy.getInstance();//此时s1和s2是同一个实列System.out.println(s1s2);//true} }显而易见上述代码的运行结果为 思考一下对于前面的饿汉模式和懒汉模式的两个代码是否线程安全 对于饿汉模式认为线程安全的——》只是读数据 对于懒汉模式多线程下调用getInstance可能会出现问题《——》线程不安全 多线程下懒汉模式可能无法保证创建对象的唯一性 懒汉模式的部分代码如下 如果是N个线程一起调用可能就会搞出N个对象了 通过加锁操作《——》锁要加在哪里多线程的代码是很复杂的不是说只要写了加锁操作就一定是线程安全了只能具体问题具体分析。 加锁是一个比较低效的操作加锁就可能涉及到阻塞等待~非必要不加锁 对于getInstance()这个方法 在该段代码中任何时候调用getInstance()都会触发锁的竞争。 其实此处的线程不安全只出现在首次创建对象这里一旦对象new好了后续在调用getInstance()就只是单纯的读操作了就没有线程安全问题就没有必要再加锁了 因此可以在加一个if语句的判定两个if语句的判定更加完美 这两个if (instancenull)的代码看起来一样实际上他俩的差别很大按照咱们之前的理解两行代码如果紧挨着的此时两行代码就会被迅速的执行完近似就可以看作是“同一时机”实际上由于这两个if中间间隔了个synchronized加锁可能导致阻塞至于啥时候解除阻塞时间不一定虽然两个条件相同但是如果调用时间长了结果也可能会不同~ 加上volatile可以解决指令重排序的问题 volatile private static SingletonLazy instancenull;//先置为空小结一下瞬间开心 单列模式的线程安全问题经典面试题 饿汉模式天然就是安全的只是读操作 懒汉模式不安全有读也有写操作 加锁把if和new变成原子操作双重if减少不必要的加锁操作使用volatile禁止指令重排序保证后续线程拿到的是完整对象
http://www.hkea.cn/news/14453317/

相关文章:

  • 门户网站的流程汉口专业网站推广公司
  • 怎么注册网站啊定制企业网站
  • 大山子网站建设建设职业学校精品网站
  • 群晖nas可以做网站吗网站开发小组分工
  • 手机软件下载网站wap模板网站开发后端框架
  • 十条网站建设的seo策略个人网页成品
  • 北京活动策划网站wordpress 企业站模板
  • 网站建设专业知识应用江西网站设计电话
  • 常州微网站建设商务网站建设考试
  • 怎么制作一个网站5个网页网站开发构成
  • 网站建设加盟合作龙岩做网站改版一般多久
  • 关于网站建设调查问卷随州网络推广
  • 好用的a站视频网站 阿里云
  • 论坛推广网站湖南seo推广公司
  • 网站更换空间大连仟亿科技网站建设公司怎么样
  • 网站盈利了泉州百度关键词排名
  • 电商网站页面布局建立网站后还要钱吗
  • 南昌网站建设模板技术公司成品网站w灬源码1688
  • 网站常见的风格网站定制开发 团队
  • 内网如何做网站访问wordpress 关闭本地化
  • 网站建设人员招聘要求福州企业宣传片制作公司
  • 建设工程信息网站湖南网站建站系统哪家好
  • wordpress建站后台马鞍山网站建设制作公司
  • 自己做网站 发布视频有个蓝色章鱼做标志的网站
  • 免费推广网站wordpress修改页尾
  • 网站建设代码结构网络舆情监测处置制度
  • 企业网站建设兴田德润实惠wordpress首页文章分类
  • 东莞建网站服务中山网站建设找阿江
  • 百度推广送的公司网站有什么用魔方网站建设网站制作
  • 打码网站建设如何建立和设计公司网站