JMM是如何保证原子性呢?

3.3.1加锁

锁是一种通用技术,比如Java提供的Synchronized关键字就是锁的一种实现,Synchronized是排他锁 /独占锁,就是有你没我的意思,只要其他线程到来访问,发现锁还未释放,就要在外面等待,因为Synchronized保证在同一时间内只有一个线程能够操作数据,其保证了原子性。

3.3.2原子变量(并发量少的情况)

在java.util.concurrent下,可以发现有atomic包,它可以解决原子性问题,加锁是阻塞式方式,而原子变量是非阻塞方式。

原子类(比如AtomicInteger):原子类的原子性是通过volatile+CAS实现原子操作的,volatile为CAS的实现提供了基础。

相关推荐
l1t1 分钟前
与系统库同名python脚本文件引起的奇怪错误及其解决
开发语言·数据库·python
星空露珠18 分钟前
迷你世界UGC3.0脚本Wiki角色模块管理接口 Actor
开发语言·数据库·算法·游戏·lua
IpdataCloud19 分钟前
指纹浏览器为什么要自建IP检测?基于IP数据云离线库的架构实践
数据库·网络协议·tcp/ip·架构·edge浏览器
翻斗包菜28 分钟前
MySQL 从入门到精通:数据库核心知识与实战指南
数据库·mysql
grizzliesster21 小时前
MySQL——表的约束
数据库·mysql
卤炖阑尾炎1 小时前
MySQL 数据库初体验:从基础概念到服务部署全攻略
数据库·mysql·oracle
hongtianzai2 小时前
MySQL中between and的基本用法
android·数据库·mysql
隔壁小邓2 小时前
数据库中间件全景解析:从连接管理到分布式协同
数据库·分布式·中间件
lcrml2 小时前
Redis简介、常用命令及优化
数据库·redis·缓存
一只努力的微服务2 小时前
【Calcite 系列】深入理解 Calcite 的 IntersectToSemiJoinRule
大数据·数据库·calcite·优化规则