非阻塞队列

时间:2010-08-11 00:54:42

标签: nonblocking

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

1 个答案:

答案 0 :(得分:3)

缺点是,如果存在争用,它会在尝试增加值时旋转。这意味着它对于高争用锁定是不利的。

优点是它没有锁定获取/信号量开销。这对于低争用锁定很有用。