62,620
社区成员
发帖
与我相关
我的任务
分享public class CasCounter {
private SimulatedCAS value;
public int getValue() {
return value.getValue();
}
public int increment() {
int oldValue = value.getValue();
while (value.compareAndSwap(oldValue, oldValue + 1) != oldValue)
oldValue = value.getValue();
return oldValue + 1;
}
}
这个类里面,没有任何的锁,因此称之为无所
当然,你可能会说,这个类调用了value.compareAndSwap(oldValue, oldValue + 1)方法,这个方法是加锁的,难道不会等待吗?
答案是,该函数是一个模拟实现,目的是告诉你该函数的具体含义。完全按照这个程序执行,当然会等待。但是,请注意,他只是模拟。在实际情况下,CAS是CPU的一个原语,该操作只占用一个时钟周期,是无需等待的。因此,在实际操作环境下,是无需等待的