如果两个线程使用 i++ 来同时增加同一个
但是如果我们有2个核心和2个线程,他们同时(完全相同的时间)调用
他们是否有可能同时加载同一个
总之:AtomicInteger处理同步吗?
int i
,就会存在问题,因为 i++ 不是原子操作。这就是为什么有 AtomicInteger.increment()
,它可以使增加变成原子性的操作。如果我们只有1个核心并且有2个线程在执行 .increment()
,那么就绝对不会有问题(因为它不可能在操作中间被挂起)。但是如果我们有2个核心和2个线程,他们同时(完全相同的时间)调用
increment()
呢?他们是否有可能同时加载同一个
int i
的值?这意味着如果int i
为 1 ,则最终结果将为 2 而不是 3 。在这种情况下,我们不关心它是否为原子操作,因为他们都同时取得了相同的值。总之:AtomicInteger处理同步吗?