IBM(参见Source)写了Java 1.5的java.util.concurrent类的好处,它提供了非阻塞队列。
请解释下面的NonBlockingCounter的缺点/缺点。
public class NonblockingCounter {
private AtomicInteger value;
public int getValue() {
return value.get();
}
public int increment() {
int v;
do {
v = value.get();
}
while (!value.compareAndSet(v, v + 1)); // params - (actual, expected)
return v + 1;
}
}
来源 - http://www.ibm.com/developerworks/java/library/j-jtp04186/index.html
答案 0 :(得分:3)
缺点是,如果存在争用,它会在尝试增加值时旋转。这意味着它对于高争用锁定是不利的。
优点是它没有锁定获取/信号量开销。这对于低争用锁定很有用。