JMM是如何保证原子性呢?

3.3.1加锁

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

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

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

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

相关推荐
2301_788756061 分钟前
Python在2024年的主要趋势与发展方向
jvm·数据库·python
uoKent9 分钟前
MySQL示例数据库
数据库·mysql
麦聪聊数据11 分钟前
利用SQL2API模式重构微服务中的数据查询层
数据库·sql·低代码·微服务·架构
占疏18 分钟前
数据库-BRIN 索引
数据库·mysql
u01092727121 分钟前
Python虚拟环境(venv)完全指南:隔离项目依赖
jvm·数据库·python
m0_6860416122 分钟前
Python类型提示(Type Hints)详解
jvm·数据库·python
晚风_END22 分钟前
postgresql数据库|pgbouncer连接池压测和直连postgresql数据库压测对比
数据库·postgresql·oracle·性能优化·宽度优先
三水不滴41 分钟前
Redis 持久化机制
数据库·经验分享·redis·笔记·缓存·性能优化
lusasky1 小时前
Claude Code v2.1.0+ 版本集成LSP
大数据·数据库·人工智能
凯子坚持 c1 小时前
Qt常用控件指南(7)
服务器·数据库·qt