JMM是如何保证原子性呢?

3.3.1加锁

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

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

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

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

相关推荐
大学生资源网6 分钟前
基于springboot的农村综合风貌展示平台设计与实现(源码+文档)
java·数据库·spring boot·后端·毕业设计·源码·springboot
严文文-Chris17 分钟前
向量数据库选型完全指南
数据库
未来之窗软件服务19 分钟前
自建开发工具IDE(七)数据库集群智能升级东方仙盟数据库同化,五行八卦排序+游戏修仙,精准补齐差异还能圆武侠梦—东方仙盟筑基期
数据库·游戏·oracle·仙盟创梦ide·东方仙盟·东方仙盟架构·东方仙盟商业开发
奔跑吧邓邓子21 分钟前
Neo4j图数据库实战:解锁关系数据的无限潜力
数据库·实战·neo4j
Miss_Chenzr41 分钟前
Springboot文化艺术发展有限公司4rl42(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·后端
Knight_AL41 分钟前
Redis Lua 脚本为什么天然具备原子性?
数据库·redis·lua
码界奇点43 分钟前
时序数据库界的速度与激情金仓数据库如何以技术创新超越InfluxDB
数据库·时序数据库·ux
Elastic 中国社区官方博客1 小时前
使用 Elasticsearch Agent Builder 构建对话式费用助手,结合 Telegram, n8n 和 AWS Bedrock
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·aws
Alex_81D1 小时前
Spring Data JPA以及JPQL等特性详细使用教程
java·数据库·后端
老马聊技术1 小时前
HBase完全分布式集群搭建详细教程
数据库·分布式·hbase