java

位置:IT落伍者 >> java >> 浏览文章

JAVA高级:多核线程-volatile原理与技巧[3]


发布日期:2019年10月24日
 
JAVA高级:多核线程-volatile原理与技巧[3]

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等等

[] [] [] []

               

上一篇:JAVA高级:多核线程-volatile原理与技巧[4]

下一篇:JAVA高级:多核线程-volatile原理与技巧[2]