如何解决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 举报,一经查实,本站将立刻删除。