JMM是如何保证原子性呢?

3.3.1加锁

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

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

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

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

相关推荐
TechWayfarer5 分钟前
离线IP数据库内网部署:场景选型与热更新落地实践
网络·数据库·python·网络协议·tcp/ip
科技牛牛5 分钟前
离线IP数据库推荐:风控合规场景怎么选
网络·数据库·tcp/ip·离线ip数据库·.数据安全
不剪发的Tony老师6 分钟前
FXDB:一款免费开源的桌面数据库客户端工具
数据库
szccyw08 分钟前
如何防止 Laravel 中因动态列名导致的 SQL 注入风险
jvm·数据库·python
zhangchaoxies8 分钟前
团队版Navicat专属功能:如何共享数据库架构ER模型_核心机制解析
jvm·数据库·python
2301_7950997418 分钟前
HTML5中Object标签定义外部资源容器的备份逻辑
jvm·数据库·python
z44247532618 分钟前
CSS如何保证移动端顶部Fixed头部的安全区域
jvm·数据库·python
weixin_4585801220 分钟前
golang如何优化反射性能_golang反射性能优化技巧
jvm·数据库·python
步辞22 分钟前
CSS如何解决小屏幕上的长单词截断版面
jvm·数据库·python
qq_4609784026 分钟前
如何在无向图中找出从任意节点可达的所有节点(连通分量识别)
jvm·数据库·python