java - 如何在java中使用CAS(比较和交换)?

标签 java multithreading optimization concurrency processor

我已经了解了使用 Java 来使用处理器的 CAS 指令的可能性。

当我用谷歌搜索示例时,我只找到了诸如 SimulatedCAS 。 这个类显然只是 CAS 的模拟(顾名思义...),在其类方法上使用常见的“同步”。

所以我想知道,如何通过 Java 真正使用 CAS 指令?

最佳答案

研究诸如 AtomicBooleanAtomicReference 之类的类。它们是执行您想要的操作的抽象,但实际上并不位于 CPU 上。

我使用的一种模式是线程安全的状态保持。

private final AtomicBoolean isClosed = new AtomicBoolean(false);

...

public void close() {
    if (this.isClosed.compareAndSet(false, true) {
        ....
    }
}

关于java - 如何在java中使用CAS(比较和交换)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21958889/

相关文章:

java - 不同类型的数组

java - ArrayList 返回错误值

java - 如何在 java 项目中使用 gradle build 只编译更改的文件

c 多线程

java - 在主线程上声明的单独线程内部实例化变量,好还是坏?

algorithm - 将给定问题优化为线性时间而不用担心空间

java - 用Java对二维数组排序-跳过第一个索引

java - 多线程访问同一个文本文件

javascript - 只需一行代码即可将类的禁用属性设置为 true

python - PuLP 中的线性整数优化