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

单例的饿汉式,懒汉式的线程安全问题

1 单例的饿汉式

对象在类加载的时候就创建了,线程安全,速度块,但是浪费空间,

public class Hungry {//唯一对象private static final Hungry HUNGRY = new Hungry();byte byte1[]=new byte[1024];byte byte2[]=new byte[1024];byte byte3[]=new byte[1024];//构造器私有,防止外部new新的对象private Hungry() {}public static Hungry getInstance() {return HUNGRY;}
}

2单例的懒汉式

public class LazyMan {private static LazyMan lazyMan;private LazyMan() {}public static LazyMan getInstance() {if (lazyMan == null) {lazyMan = new LazyMan();}return lazyMan;}public static void main(String[] args) {for (int i = 0; i < 10; i++) {new Thread(()-> System.out.println(LazyMan.getInstance())).start();}}
}

懒汉式单例创建对象慢,省内存,但是线程不安全
在这里插入图片描述
如图产生了两个对象

双重检测锁搞定线程安全问题

懒汉式单例的双重检测锁==DCL懒汉式

   public static LazyMan getInstance() {if (lazyMan == null) {//因为怕加锁之前lazyMan!=null,所以加双重检测synchronized (LazyMan.class) {if (lazyMan == null) {lazyMan = new LazyMan();}}}return lazyMan;}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 智能代码编辑器:Visual Studio Code的深度剖析
  • k8s--关于pod方面问题的排错思路与方法
  • .NetCore+vue3上传图片 Multipart body length limit 16384 exceeded.
  • redis常用知识汇总(包括 jedis 和 springboot 整合 redis)
  • Matlab自学笔记三十五:表table数据与外部文件的读入和写出
  • SpringBoot项目是如何启动
  • 工厂ERP管理系统实现源码(JAVA)
  • Linux查找文件 find、locate、grep等使用说明
  • Lua 脚本在 Redis 中执行时的原子性以及与redis的事务的区别
  • PurchasereturnController
  • HTML/CSS/JS学习笔记 Day1(HTML--工具语法规范)
  • 忘记开 long long
  • 编写Dockerfile第二版
  • emlogpro插件-优雅的时间进度侧边栏小工具插件
  • Kafka (快速)安装部署
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • ES6简单总结(搭配简单的讲解和小案例)
  • nginx 负载服务器优化
  • React Native移动开发实战-3-实现页面间的数据传递
  • React16时代,该用什么姿势写 React ?
  • Spring-boot 启动时碰到的错误
  • vue-router的history模式发布配置
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 想写好前端,先练好内功
  • 小程序01:wepy框架整合iview webapp UI
  • 走向全栈之MongoDB的使用
  • Linux权限管理(week1_day5)--技术流ken
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • # 服务治理中间件详解:Spring Cloud与Dubbo
  • #、%和$符号在OGNL表达式中经常出现
  • #1015 : KMP算法
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • (04)odoo视图操作
  • (13)DroneCAN 适配器节点(一)
  • (2)Java 简介
  • (2024,RWKV-5/6,RNN,矩阵值注意力状态,数据依赖线性插值,LoRA,多语言分词器)Eagle 和 Finch
  • (a /b)*c的值
  • (备份) esp32 GPIO
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • (转)shell中括号的特殊用法 linux if多条件判断
  • .NET/C# 中你可以在代码中写多个 Main 函数,然后按需要随时切换
  • .net项目IIS、VS 附加进程调试
  • /proc/interrupts 和 /proc/stat 查看中断的情况
  • ?.的用法
  • [ABP实战开源项目]---ABP实时服务-通知系统.发布模式
  • [AIGC] MySQL存储引擎详解
  • [APIO2015]巴厘岛的雕塑
  • [C# 开发技巧]如何使不符合要求的元素等于离它最近的一个元素
  • [C++]使用yolov10的onnx模型结合onnxruntime和bytetrack实现目标追踪