如果两个线程都int i
使用i++递增相同,我们可能会遇到问题,因为i++不是原子操作。这就是为什么存在AtomicInteger.increment()
,这使得递增原子。因此,如果我们有 1 个核心和 2 个线程在做.increment()
,绝对没有问题(因为它不能在运行过程中暂停)。
但是,如果我们有 2 个内核和 2 个线程并且它们并行(在完全相同的时间)调用它increment()
呢?
他们是否有可能加载相同的值int i
?意思是如果int i
是1,最终结果将是2而不是3。在那种情况下,我们不在乎它是否是原子操作,因为它们都同时取相同的值..
底线:AtomicInteger 是否处理同步?