java - AtomicInteger 的嵌套方法调用在 java 中也是原子的吗

标签 java multithreading atomic java-5

此操作是原子操作还是之间存在数据竞争的可能性?

atomicInteger.set(-atomicInteger.get());

如果存在数据竞争,如何原子地否定 AtomicInteger

最佳答案

我会这样做

public int getAndNegate(AtomicInteger i) {
    for (;;) {
        int current = i.get();
        int next = -current;
        if (i.compareAndSet(current, next))
            return current;
    }
}

关于java - AtomicInteger 的嵌套方法调用在 java 中也是原子的吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19205042/

相关文章:

c++ - 特定共享内存写入操作 (MPI) 的同步

java - 日期选择器不适用于 API 26

java - Springboot API 返回空响应

java - Dropwizard HttpSession 与 Redis

python - 线程显然在没有任何代码引用的情况下工作

c++ - std::atomic<int> 递减和比较

java - 深拷贝似乎不起作用

java - Java中的多线程解压

c# - 当所有线程都完成时

c++ - 引用 std::atomic<bool> 的已删除函数错误