public class StatValues extends Object
注意这里用的是CAS机制 该机制用失败重试的方式代替了锁 它允许多线程同时对一个原子进行修改,但是当写入新值却发现新值已被修改时,需要重新执行赋值过程,直至成功 需要注意的是赋值过程是会可能被不断重复执行的,那赋值算法中唯一允许变化的就是该原子内部的属性值,其他的因数不能发生变化 这样能在大部分没有并发冲突的情况下提高性能 所有对AtomicReference中的值的更改,必需是写入一个全新的数组,不能直接更改原来已有数组中的值(这样才能保证是对原子进行修改)
| 构造器和说明 |
|---|
StatValues(long[] values) |
| 限定符和类型 | 方法和说明 |
|---|---|
void |
clear(long[] toBeClear)
打印完毕后对槽清空
由于在打印期间值可能已经被更新,所以传入需要被clear的数值数组,减去已被打印的值
(所有操作需满足CAS机制)
|
long[] |
getCurrentValue()
返回当前值
这里可以直接get并返回,返回的值肯定不会改变
因为任何对values这个原子的改变都是直接覆盖数组的引用地址
而不会更新数组中的值
|
void |
update(long[] update)
写入新值
(所有操作需满足CAS机制)
|
public void update(long[] update)
update - 要更新的新值public void clear(long[] toBeClear)
toBeClear - long 数组public long[] getCurrentValue()
Copyright © 2018 Pivotal Software, Inc.. All rights reserved.