有关单例模式懒汉式安全的问题(全)

单例模式有两种一种是懒汉式,一种是饿汉式,他们有什么区别呢?

他们建立单例对象的时间不同,懒汉式的特点是延迟加载,当你用到的时候才去建立对象,

还有懒汉式多线程是不安全的,但是他可以有解决办法,以下内容我会详细说明。

他们怎么好记呢?

饿汉式,因为饿,所以就它需要迫切的吃东西,所以写类的时候直接就创建对象。

懒汉式,因为懒,所以它就晚创建对象,特点是延迟加载。当你用到的时候它才会去建立对象。

当多线程的时候懒汉式会有安全问题,但是仅仅在方法前面加一个synchronized又会有效率的

问题,所以一下代码是一个还算好的代码,可以用在笔试题上,比其他的更高级

图1

图1代码有两个好处;

1.解决了多线程安全的问题,

2.用两个判断语句提高了效率。

面试的时候偶面试官可能问你,懒汉式有问题吗?怎么解决?用的是什么锁?

你的回答;有问题,在多线程的时候会出现安全问题,可以用同步代码块或者同步函数解决,但是效率低,用双重判断解决低效的问题。用的锁是本类所属的字节码文件对象

一般面试不会问饿汉式

懒汉式的代码

转载于:https://www.cnblogs.com/zhznihao/p/7422585.html

有关单例模式懒汉式安全的问题(全)相关推荐

  1. 单例模式-懒汉式和恶汉式

    单例 /*** @author jiyu* @date 2020/12/09 9:09* @description 单例模式 懒汉式 在第一次调用的时候实例化*/ public class Singl ...

  2. 单例模式 懒汉式与恶汉式

    单例模式 懒汉式与恶汉式_打不倒我的,会让我更坚强_百度空间 http://hi.baidu.com/5053738058/item/0853dde084d23fe5fa42ba18 转载于:http ...

  3. 单例模式懒汉式和饿汉式区别

    单例模式懒汉式和饿汉式区别 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 这种模式涉及到一个单 ...

  4. 单例模式懒汉式和饿汉式的区别

    文章目录 一.单例模式 二.懒汉式和饿汉式 一.单例模式 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最 ...

  5. Java多线程:多线程同步安全问题的 “三“ 种处理方式 ||多线程 ”死锁“ 的避免 || 单例模式”懒汉式“的线程同步安全问题

    Java多线程:多线程同步安全问题的 "三" 种处理方式 ||多线程 "死锁" 的避免 || 单例模式"懒汉式"的线程同步安全问题 每博一文 ...

  6. Java单例模式--------懒汉式和饿汉式

    Java单例模式--------懒汉式和饿汉式 单件模式用途: 单件模式属于工厂模式的特例,只是它不需要输入参数并且始终返回同一对象的引用. 单件模式能够保证某一类型对象在系统中的唯一性,即某类在系统 ...

  7. Spring框架学习day_01: 框架配置方式/ 管理对象的作用域/ 生命周期/ 组件扫描/ 单例模式:“懒汉式“,“饿汉式“

    1. Spring框架的作用 Spring框架的主要作用是创建对象和管理对象. 创建对象:类似于User user = new User(); 管理对象:随时可以通过Spring框架获取对象,甚至Sp ...

  8. 单例模式懒汉式(线程安全写法)

    package com.atguigu.java1;/*** 使用同步机制将单例模式中的懒汉式改写为线程安全的** @author shkstart* @create 2019-02-15 下午 2: ...

  9. java 恶汉和懒汉_Java单例模式-懒汉式、恶汉式与线程安全问题

    Java的单例模式常见的分为懒汉式.饿汉式.静态内部类.枚举 通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数额控制并节约系统资源. 饿汉式: public cl ...

最新文章

  1. 那些下载不了的视频,Python只用1行代码就能直接下载
  2. 卷首寄语:我们的今天,明天--致所有战斗在一线的同行们
  3. 10、查看索引(SHOW INDEX)
  4. xml教程之约束schema
  5. Spring AOP源码分析(七)ProxyFactoryBean介绍
  6. python批量复制文件问题,python 批量复制不同目录下的文件
  7. ElasticSearch 2 (16) - 深入搜索系列之近似度匹配
  8. LIBSVM在Matlab下的使用
  9. C++ 实现matlab高斯滤波函数imgaussfilt
  10. 联想服务器引导盘制作工具,联想(Lenovo)服务器System X 系列无法进入引导盘Server Guide的解决方案 - 王耍耍...
  11. @DependsOn
  12. kindle paper write1 kindle pw1 安装多看系统 or 原本是多看双系统,升级kindle系统后多看系统消失,解决方法降级kindle系统+重装kindle系统
  13. 微信支付查询订单V2 接口
  14. 大学生如何合理利用计算机,大学生如何安排自己的课余时间?6招,学霸教会你正确使用手机...
  15. 用Java语句判断一个数字是不是7的倍数
  16. NAMD靶向分子动力学模拟Target molecular dynamic stimulation(附conf文件)
  17. Shiro密码加密 盐值加密
  18. js 将日期转换成时间戳
  19. android官方技术文档翻译——Android Lint
  20. wiredtiger java_为什么PostgreSQL比MongoDB还快之续篇(WiredTiger引擎)

热门文章

  1. Pytorch中的optimizer.zero_grad和loss和net.backward和optimizer.step的理解
  2. 可视化卷及神经网络热力图
  3. BIT的浅谈,简单理解
  4. 创业者具备的五大技能_一个优秀创业者必备的基本素质和技能
  5. akka框架——异步非阻塞高并发处理框架
  6. 【Git+Docker】Docker初期学习认识和安装配置详解
  7. 面向对象深入:继承03——抽象类
  8. ORA-00928: 缺失 SELECT 关键字
  9. Java基础-绘图技术
  10. 在开发游戏过程中遇到的一些错误(很基础的错误)