AtomicInteger是否处理同步?

时间:2020-08-17 11:48:10

标签: java atomicity atomicinteger

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

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

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

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

1 个答案:

答案 0 :(得分:3)

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

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

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

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

相关问题