當前位置:編程學習大全網 - 網站源碼 - compareandset和weakcompareandset的區別

compareandset和weakcompareandset的區別

compareAndSet()與weakCompareAndSet()是有條件的修改程序的方法。這兩個

method 都要取用兩個參數 —— 在method 啟動時預期數據所具有的值,以及要把數據

所設定成的值。method只會在變量具有預期值的時候才會將它設定成新值。如果當前值

不等於預期值,該變量不會被重新賦值且method 返回false。如果當前值等於預期值會

返回boolean 的true 值,在這種情況下,值會被設定成新值。這個method 的weak 形式

基本上也是壹樣,但是少了壹項保證:如果method 返回的是false 值,該變量不會被變

動,但是這並不表示現有值不是預期值。這個method 不管初始值是否為預期值都可能

會無法更新該值。

不過JDK中的實現是壹樣的:

public final boolean compareAndSet(boolean expect, boolean update)

public boolean weakCompareAndSet(boolean expect, boolean update)

實現方式:

public boolean weakCompareAndSet(boolean expect, boolean update) {

int e = expect ? 1 : 0;

int u = update ? 1 : 0;

return unsafe.compareAndSwapInt(this, valueOffset, e, u);

}

  • 上一篇:html中怎麽實現自動播放視頻與音樂文件?
  • 下一篇:誰知道怎樣下載好看的新浪博客皮膚
  • copyright 2024編程學習大全網