AtomicXXX 用得好好的,阿里为什么推荐使用 LongAdder?面试必问

面试连环炮

先来一连炮简单的面试,看你能顶住几轮?


栈长:

1、多线程情况下,进行数字累加(count++)要注意什么?

张三:

要注意给累加方法加同步锁,不然会出现变量可见性问题,变量值被其他线程覆盖出现不一致的情况

栈长:

2、保证变量的可见性,用 volatile 修饰不就行了吗?

张三:

volatile 是可以保证可见性,但不能保证原子性和线程安全

栈长:

3、除了加同步锁这种方案,还有别的方法吗?

张三:

还可以用 JDK 中的原子类,比如:AtomicInteger、AtomicLong,它们是通过 CAS 算法实现的一种乐观主义

栈长:

4、不错,还知道别的么?

张三:

呃……


认真的,你能顶住几轮?

这些问题是 Java 程序员面试过程中必问的,出场率贼高,Java 程序员必懂,这些题在Java面试库小程序中也都有详细答案,这里就不展开了。

你还知道别的么?最后一轮的答案就是今天的主题!

更好的选择:LongAdder

你还在用 AtomicInteger、AtomicLong 原子类进行并发累加操作吗?那你就 OUT 了!

除了 AtomicInteger、AtomicLong,其实在 JDK 8 中更建议使用 LongAdder 进行原子性操作,性能更好,如果你使用的还是 JDK 7-,那当我没说,即使如此,也不能找借口不知道,毕竟 JDK 8 是现在的主流应用版本了。

阿里巴巴最新的 Java开发手册 是这么定义的:

<

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值