2010-08-11 152 views
2

IBM(请参阅源代码)写了关于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

回答

3

的缺点是,它旋转,同时试图增加值,如果有冲突。这意味着它对高争用锁定是不利的。

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