我經常遇到這樣的情況,即如果發生某些事情與預期不同,就會觸發某個操作。不幸的是,compareAndSet不適合這種原子問題。我需要像compareAndSetIfUnequal這樣的東西。目前我使用類似下面的代碼,但恐怕它是昂貴的:是否有一個compareAndSet for!= value(compareAndSetIfUnequal)?
private AtomicReference<T> atomic = new AtomicReference<T>(null);
public static void doIfUnequal(T obj) {
if(atomic.getAndSet(obj) != obj) {
doSomething();
}
}
compareAndSetIfUnequal是功能上與簡單的設置相同,不是嗎? –