2010-08-11 145 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

的缺點是,它旋轉,同時試圖增加值,如果有衝突。這意味着它對高爭用鎖定是不利的。

優點是它沒有鎖獲取/信號量開銷。這對低爭用鎖很有用。