微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

AtomicInteger是否处理同步?

如何解决AtomicInteger是否处理同步?

如果两个线程都使用 i ++ 递增相同的int i,我们可能会遇到问题,因为 i ++ 不是原子操作。这就是为什么AtomicInteger.increment()使原子递增的原因。因此,如果我们有1个核心和2个线程在做.increment(),那绝对不会有问题(因为它不能在操作过程中被挂起)。

但是,如果我们有2个内核和2个线程,并且它们并行地(在同一时间)调用increment()怎么办?

是否有可能加载相同的int i值?这意味着如果int i 1 ,则最终结果将为 2 ,而不是 3 。在那种情况下,我们不在乎它是否是原子操作,因为它们同时具有相同的值。

最重要的是:AtomicInteger处理同步吗?

解决方法

是否有可能加载相同的int i值?

是的,但是可以为您处理。

incrementAndGet方法使用原子性的“比较并设置”操作来设置增量值,但前提是尚未设置新值。如果比较失败,incrementAndGet将获取新值,然后重试。

最终结果是,可以安全地从多个线程中使用incrementAndGet

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。