闭关修炼啊哈 2022-09-18 19:01 采纳率: 86.7%
浏览 21

java的原子操作cas相关疑惑

java的原子操作cas相关疑惑

cas操作是由cpu底层的并发源语实现的,可以保证代码的原子性。
但是如果我有两个cas操作是并行的呢,就是两个cpu,同时执行比较替换。例如我下面的代码:


        new Thread(() -> {
            atomicInteger.compareAndSet(0, 1);
        }, "线程a").start();

        new Thread(() -> {
            atomicInteger.compareAndSet(0, 2);
        }, "线程b").start();

假设我的两个线程是并行,并且在同一时刻执行cas操作,确实是原子性不可中断的,但是如果是同时发生呢,这样到底谁成功,谁失败呢?

还是说cas的原子性还保证了在替换的同时只有一个线程可以操作;还是有啥子其他的原因。

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-18 19:18
    关注
    评论

报告相同问题?

问题事件

  • 创建了问题 9月18日

悬赏问题

  • ¥15 安装wampserver,图标绿色,但是无法进入软件
  • ¥15 C++ MFC 标准库 加密解密解惑
  • ¥15 两条数据合并成一条数据
  • ¥15 Ubuntu虚拟机设置
  • ¥15 comsol三维模型中磁场为什么没有“速度(洛伦兹项)”这一选项
  • ¥15 electron 如何实现自定义安装界面
  • ¥15 关于#linux#的问题:子进程C运行“ls –l”命令,且显示“C运行ls-l命令”(语言-c语言)
  • ¥15 vs code配置c语言遇到这个问题
  • ¥15 vscode调试编译找不到gcc,只有cl,但是检查cmd是对的,控制面板的路径也更改了
  • ¥20 access中怎么分割分别获取一下图中的值