簡體   English   中英

AtomicInteger 是否處理同步?

[英]Does AtomicInteger handle synchronization?

如果兩個線程都使用i++遞增相同的int i ,我們可能會遇到問題,因為i++不是原子操作。 這就是為什么有AtomicInteger.increment() ,它使遞增原子。 因此,如果我們有 1 個核心和 2 個線程在執行.increment() ,則絕對沒有問題(因為它不能在操作中間暫停)。

但是,如果我們有 2 個內核和 2 個線程並且它們並行(在完全相同的時間)調用該increment()呢?

他們是否有可能加載相同的int i值? 這意味着如果int i1 ,最終結果將是2而不是3 在那種情況下,我們不在乎它是否是原子操作,因為它們都同時取相同的值..

底線:AtomicInteger 是否處理同步?

他們是否有可能加載相同的int i值?

是的,有,但它是為你處理的。

incrementAndGet方法使用原子“比較和設置”操作來設置遞增值,但前提是尚未設置新值 如果比較失敗,則incrementAndGet獲取新值並重試。

最終效果是,從多個線程中使用incrementAndGet是安全的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM