2
我去了在非阻塞-CAS一篇文章,遇到了這個代碼:Java中的非阻塞CAS是否真的非阻塞?
public class SimulatedCAS {
private int value;
public synchronized int getValue() {
return value;
}
public synchronized int compareAndSwap(int expectedValue, int newValue) {
int oldValue = value;
if (value == expectedValue)
value = newValue;
return oldValue;
}
}
這是怎麼CAS操作非阻塞,如果它使用的同步?
如果我們的意思是這個SimulatedCAS
的客戶端不需要實現自己的同步,那麼我們是不是已經將阻塞移動了而不是消除它?
這是如何「非阻塞?」兩種方法都是「同步的」,這意味着兩個呼叫不能同時發生。 – 2013-05-12 15:49:03
你能發表一篇文章鏈接嗎? – 2013-05-12 15:55:33
原始來源似乎是「實踐中的Java併發」(第322頁)(15.2.1) – kryger 2013-05-12 16:19:34