熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java高級技術 >> 正文

JAVA高級:多核線程-volatile原理與技巧[3]

2022-06-13   來源: Java高級技術 

    CAS 原理

    我認為位置V 應該包含值A如果包含該值則將B 放到這個位置否則不要更改該位置只告訴我這個位置現在的值即可

    CAS使用示例(jdk 並發包 AtomicInteger類分析

   /**
* Atomically sets to the given value and returns the old value
*
* @param newValue the new value
* @return the previous value
*/ public final int getAndSet(int newValue) {
for (;;) {
int current = get();
if (compareAndSet(current newValue))
return current;
}
}
public final boolean compareAndSet(int expect int update) {
return unsafecompareAndSwapInt(this valueOffset expect update);
}

    這個方法是AtomicInteger類的常用方法作用是將變量設置為指定值並返回設置前的值

    它利用了cpu原語compareAndSet來保障值的唯一性

    另AtomicInteger類中其他的實用方法也是基於同樣的實現方式

    比如 getAndIncrementgetAndDecrementgetAndAdd等等

[]  []  []  []  


From:http://tw.wingwit.com/Article/program/Java/gj/201311/27719.html
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.