JMM是如何保证原子性呢?

3.3.1加锁

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

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

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

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

相关推荐
Y00111236几秒前
Day3-MySQL-SQL-2
数据库·sql·mysql
V1ncent Chen16 分钟前
从零学SQL 07 数据过滤
数据库·sql·mysql·数据分析
A101693307116 分钟前
maven导入spring框架
数据库·spring·maven
代码探秘者20 分钟前
【Java集合】ArrayList :底层原理、数组互转与扩容计算
java·开发语言·jvm·数据库·后端·python·算法
末点39 分钟前
超长文本格式坐标串数据空间化入库
数据库·c#·st_geomfromtext
七七powerful1 小时前
养龙虾-在 Grafana 中获取 API Token 的方法
数据库
阿坤带你走近大数据1 小时前
Oracle存储过程怎么写
数据库·oracle·存储过程
搜佛说1 小时前
第2章-EdgeX-Foundry架构深度解析
数据库·物联网·架构·边缘计算·iot
知识分享小能手1 小时前
PostgreSQL 入门学习教程,从入门到精通,PostgreSQL 16 服务器配置与数据库监控终极指南 —语法、案例与实战(18)
数据库·学习·postgresql
珠海西格电力1 小时前
零碳园区全面感知体系的建设成本和收益分析包含哪些关键数据?
大数据·数据库·人工智能·智慧城市·能源