Я сталкиваюсь с проблемой, которая связана с Atomicreferencefieldupdater. Короче говоря, наш код точно так же: < /p>
Код: Выделить всё
public class Test {
enum State {
INIT,
OPEN,
CLOSED
}
private static final AtomicReferenceFieldUpdater stateUpdater =
AtomicReferenceFieldUpdater.newUpdater(Test.class, State.class, "state");
volatile State state;
public Test() {
state = State.INIT;
}
public void doSomething() {
if (stateUpdater.compareAndSet(this, State.INIT, State.OPEN)) {
// do something
return;
} else {
String message = String.format("Unexpected state: %s, expect INIT state.", state);
System.out.println(message);
}
}
public static void main(String[] args) {
new Test().doSomething();
}
}
Подробнее здесь: https://stackoverflow.com/questions/796 ... eldupdater