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

线程安全问题和多线程安全经典案例

一.线程安全问题

现象:多条线程消费(读取、更改)一些已经被消费过的数据。(消费:更改,更新)

原因:

1.每一个子线程都有自己的工作空间。

2.破坏了数据的原子性(不可分割)。(同时成功或者同时失败)

3.多条线程(并发)操作同一共享数据。

4.几乎无法预测线程的执行顺序。(每个子线程工作过程不透明)

5.只存在读数据的时候,不会产生线程安全问题。

二.超卖问题(超出了售卖的个数)

.现象:超卖又可以理解为过量出售。消费的个数超出了原有的库存量。现在卖10个豆浆机。

.产生的原因:某个服务或线程出售了不存在的库存量。

.问题分析:并发线程,共享数据,共同写操作会导致死锁。

.解决方法:

        a.加锁 (如使用synchronized,是操作为原子性,互斥区)

        b. 及时更新总量(如使用volatile)

        c.  添加补偿机制(CAS):如果已经发生了线程安全问题,去尝试补偿我这个线程。比如A和B同时抢到了第7个豆浆机,我就从总数里面再拿出一个给A或给B.

        d. 部分加锁:synchronized会影响性能。我可以在卖到第5个豆浆机的时候加锁。剩余数量范围在5-10时不加锁,当进入到超卖的临界值5时加锁。部分加锁是加锁的一种改进版。

        e. 预留安全库存量:我只卖8个,

相关文章:

  • IDEA2020创建JavaWeb项目并配置tomcat
  • Windows下小狼毫输入法(Rime)的安装与配置
  • java 调用C#语言写的dll文件代码 超详细过程
  • Java面试题11-ReentrantLock中的公平锁与非公平锁的底层实现
  • 股票行情查询易语言代码
  • STM32学习记录 -- 通用定时器的配置(TIM2-TIM5)
  • node搭建服务器
  • 域名解析信息易语言代码
  • 【GNN报告】蒙特利尔大学朱兆成:基于图神经网络的知识图谱推理
  • ATF启动(二):BL1
  • Nginx之正则表达式、location匹配简介以及rewrite重写
  • Kafka 集群安装及常用命令
  • C++变量和基本类型
  • 室温熔盐-Romm Temperature Melten Salt-RTMS-离子液体
  • 无胁科技-TVD每日漏洞情报-2022-9-1
  • Google 是如何开发 Web 框架的
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • .pyc 想到的一些问题
  • [笔记] php常见简单功能及函数
  • 【笔记】你不知道的JS读书笔记——Promise
  • Asm.js的简单介绍
  • DOM的那些事
  • es6(二):字符串的扩展
  • EventListener原理
  • HTTP那些事
  • jQuery(一)
  • Laravel Mix运行时关于es2015报错解决方案
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • Linux CTF 逆向入门
  • MySQL QA
  • Python学习之路13-记分
  • Redis的resp协议
  • tensorflow学习笔记3——MNIST应用篇
  • Vue小说阅读器(仿追书神器)
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 来,膜拜下android roadmap,强大的执行力
  • 马上搞懂 GeoJSON
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 突破自己的技术思维
  • gunicorn工作原理
  • Prometheus VS InfluxDB
  • 容器镜像
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • #mysql 8.0 踩坑日记
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (11)MATLAB PCA+SVM 人脸识别
  • (2015)JS ES6 必知的十个 特性
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (二)springcloud实战之config配置中心
  • (附源码)ssm码农论坛 毕业设计 231126
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (强烈推荐)移动端音视频从零到上手(下)
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失
  • (转)机器学习的数学基础(1)--Dirichlet分布