原子类变量

(17条消息) Java16个原子类介绍-基于JDK8_晏霖/胖虎的博客-CSDN博客_原子类

   AtomicInteger.incrementAndGet():

incrementAndGet()方法在一个无限循环体内,不断尝试将一个比当前值大1的新值赋给自己,如果失败则说明在执行"获取-设置"操作的时已经被其它线程修改过了,于是便再次进入循环下一次操作,直到成功为止。

//自加1方法AtomicInteger.incrementAndGet()
public final int incrementAndGet() {
    for (;;) {
        int current = get();
        int next = current + 1;
        if (compareAndSet(current, next))
            return next;
    }
}

高并发情况下,LongAdder(累加器)比AtomicLong原子操作效率更高:

longAdder.increment();//自加1

把普通变量升级为原子变量,用AtomicIntegerFieldUpdater<T>类:

AtomicIntegerFieldUpdater<类名> atomicUpdater = AtomicIntegerFieldUpdater.newUpdater(类名.class, "某属性");
atomicUpdater.getAndIncrement(new 类名());//该类对象的某属性自加1
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值