-
发展至JDk1.8,基本类型原子类有以下几个:
AtomicBoolean、AtomicInteger、AtomicLong、DoubleAccumulator、DoubleAdder、LongAccumulator、LongAdder
-
大致可以归为3类
AtomicBoolean、AtomicInteger、AtomicLong 元老级的原子更新,方法几乎一模一样 DoubleAdder、LongAdder 对Double、Long的原子更新性能进行优化提升 DoubleAccumulator、LongAccumulator 支持自定义运算
package com.xdclass.atomic.demo1;
import java.util.concurrent.atomic.AtomicInteger;
public class Demo1 {
private static AtomicInteger sum = new AtomicInteger(0);
public static void inCreate(){
sum.incrementAndGet();
}
public static void main(String[] args) {
for(int i=0;i<10;i++){
new Thread(() -> {
for(int j=0;j<10;j++){
inCreate();
System.out.println(sum);;
}
}).start();
}
}
}
package com.xdclass.atomic.demo1;
import java.util.concurrent.atomic.LongAccumulator;
public class Demo2 {
public static void main(String[] args) {
//输入一个数字,如果比上一个输入的大,则直接返回,如果小则返回上一个
LongAccumulator longAccumulator = new LongAccumulator((left,right)->
left > right ? left :right,0L
);
longAccumulator.accumulate(3L);
System.out.println(longAccumulator.get());
longAccumulator.accumulate(5L);
System.out.println(longAccumulator.get());
longAccumulator.accumulate(2L);
System.out.println(longAccumulator.get());
}
}
303

被折叠的 条评论
为什么被折叠?



