首页
关于
友链
Search
1
wlop 4K 壁纸 4k8k 动态 壁纸
1,471 阅读
2
Nacos持久化MySQL问题-解决方案
932 阅读
3
Docker搭建Typecho博客
752 阅读
4
滑动时间窗口算法
728 阅读
5
Nginx反向代理微服务配置
699 阅读
生活
解决方案
JAVA基础
JVM
多线程
开源框架
数据库
前端
分布式
框架整合
中间件
容器部署
设计模式
数据结构与算法
安全
开发工具
百度网盘
天翼网盘
阿里网盘
登录
Search
标签搜索
java
javase
docker
java8
springboot
thread
spring
分布式
mysql
锁
linux
redis
源码
typecho
centos
git
map
RabbitMQ
lambda
stream
少年
累计撰写
189
篇文章
累计收到
24
条评论
首页
栏目
生活
解决方案
JAVA基础
JVM
多线程
开源框架
数据库
前端
分布式
框架整合
中间件
容器部署
设计模式
数据结构与算法
安全
开发工具
百度网盘
天翼网盘
阿里网盘
页面
关于
友链
搜索到
1
篇与
的结果
2022-04-20
AtomicStampedReference解决CAS中ABA问题
解决CAS的ABA问题CAS虽然高效的实现了原子性操作,但是也存在一些缺点,主要表现在以下三个方面。什么是ABA问题比如:线程1从主存中读取值A,另一个线程2也从主存中读取值A,此时线程2将主存值修改成了B,然后线程2又将主存值修改成了A,这时候线程1进行CAS操作发现内存中仍然是A,然后线程1操作成功,这是不正确的。如何解决ABA问题通过AtomicStampedReference的compareAndSet方法进行处理,这里的compareAndSet比一般的多了一个stamp的比较。源码如下: public boolean compareAndSet(V expectedReference, V newReference, int expectedStamp, int newStamp) { Pair<V> current = pair; return expectedReference == current.reference && expectedStamp == current.stamp && ((newReference == current.reference && newStamp == current.stamp) || casPair(current, Pair.of(newReference, newStamp))); }多了一个stamp的比较,stamp是每次更新来维护的。
2022年04月20日
178 阅读
0 评论
3 点赞