Pregunta

I've read about the possibility to use CAS instruction of the processor, using Java.

As I googled for an examples, I only found classes such as SimulatedCAS. This class is obviously only a simulation of CAS (as its name implies...), using commmon "synchronized" on it's class methods.

So I wonder, how can one really use the CAS instruction using Java?

¿Fue útil?

Solución

Look into classes like AtomicBoolean and AtomicReference. They're abstractions that do what you want, but aren't actually on the CPU.

One pattern I've used is for thread-safe state keeping.

private final AtomicBoolean isClosed = new AtomicBoolean(false);

...

public void close() {
    if (this.isClosed.compareAndSet(false, true) {
        ....
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top