ABA问题

CAS缺点:循环时间⻓开销很⼤

引出来ABA问题???

假设这样⼀种场景,当第⼀个线程执⾏CAS(V,E,U)操作。在获取到当前变量V,准备修改为新值U前,另外两个线程已连续修改了两次变量V的值,使得该值⼜恢复为旧值,这样的话,我们就⽆法

正确判断这个变量是否已被修改过,如下图:

AtomicStampedReference<Integer> balance = new AtomicStampedReference(1000,0);

解决问题

package org.example.c4;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicStampedReference;
/***
* @Author 徐庶
* @Slogan 致敬大师,致敬未来的你
*/
public class C3_CAS_ABA {
public static void main(String[] args) throws InterruptedException {
// 张三余额
AtomicStampedReference<Integer> balance = new AtomicStampedReference(1000,0);
System.out.println("(A)张三余额:"+ balance.getReference());
// 财务发3000工资
balance.compareAndSet(balance.getReference(),4000,balance.getStamp(),balance.getStamp()+1);
System.out.println("(B)财务发3000工资:"+ balance.getReference());
// 老婆取3000工资
balance.compareAndSet(balance.getReference(),1000,balance.getStamp(),balance.getStamp()+1);
System.out.println("(A)老婆取3000工资:"+ balance.getReference());
// 张三查工资
if(balance.getReference()>3000){
System.out.println("张三美滋滋"+ balance.getReference());
}else{
if(balance.getStamp()==1){
System.out.println("张三找财务麻烦:");
}
else{
System.out.println("张三找老婆麻烦:");
}
}
}
}
posted @   会秃头的小白  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
  1. 1 原来你也在这里 周笔畅
  2. 2 世间美好与你环环相扣 柏松
  3. 3 起风了 吴青峰
  4. 4 极恶都市 夏日入侵企划
原来你也在这里 - 周笔畅
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

作词 : 姚谦

作曲 : 中島みゆき

编曲 : Terence Teo

制作人 : 朱敬然

请允许我尘埃落定

请允许我尘埃落定

用沉默埋葬了过去

满身风雨我从海上来

才隐居在这沙漠里

该隐瞒的事总清晰

千言万语只能无语

爱是天时地利的迷信

喔 原来你也在这里

啊 那一个人

是不是只存在梦境里

为什么我用尽全身力气

却换来半生回忆

若不是你渴望眼睛

若不是我救赎心情

在千山万水人海相遇

喔 原来你也在这里

请允许我尘埃落定

请允许我尘埃落定

用沉默埋葬了过去

满身风雨我从海上来

才隐居在这沙漠里

该隐瞒的事总清晰

千言万语只能无语

爱是天时地利的迷信

喔 原来你也在这里

啊 那一个人

是不是只存在梦境里

为什么我用尽全身力气

却换来半生回忆

若不是你渴望眼睛

若不是我救赎心情

在千山万水人海相遇

喔 原来你也在这里

啊 那一个人

啊 那一个人

是不是只存在梦境里

为什么我用尽全身力气

却换来半生回忆

若不是你渴望眼睛

若不是我救赎心情

在千山万水人海相遇

喔 原来你也在这里

该隐瞒的事总清晰

千言万语只能无语

爱是天时地利的迷信

喔 原来你也在这里

OT: AISARERU HANA AISAREXIU HANA

OT: AISARERU HANA AISAREXIU HANA

(中文版:原来你也在这里)

OP: Yamaha Music Publishing Inc

SP:百代音乐版权代理(北京)有限公司

配唱制作人:翁乙仁

点击右上角即可分享
微信分享提示