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

时间:2014-02-22 18:54:06

标签: java multithreading optimization concurrency processor

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

当我用Google搜索示例时,我只找到了类似的类 SimulatedCAS。 这个类显然只是CAS的模拟(顾名思义......),使用commmon“synchronized”对它的类方法。

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

1 个答案:

答案 0 :(得分:3)

查看AtomicBooleanAtomicReference等类。它们是抽象的,可以做你想要的,但实际上并不是 on CPU。

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

private final AtomicBoolean isClosed = new AtomicBoolean(false);

...

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