文章詳情頁
java - 如何理解AtomicInteger里的CAS操作?
瀏覽:90日期:2024-01-28 18:39:07
問題描述
下面這個方法,我不理解
public final int getAndIncrement() { for (;;) {int current = get();int next = current + 1;if (compareAndSet(current, next)) return current; }}
為何要循環(huán)直到成功?如果這期間有另外的線程更改了value,導(dǎo)致compareAndSet()返回false,那這就表面已經(jīng)不是原子性了吧,還繼續(xù)重復(fù)有啥意義?
問題解答
回答1:它只是要實(shí)現(xiàn)寫操作不會被覆蓋掉,多線程情況下不會計算錯誤,如果按照你這么想要實(shí)現(xiàn)原子性,只能使用鎖了,但是這樣效率會低。
標(biāo)簽:
java
上一條:既然 Java 的垃圾回收機(jī)制能夠自動的回收內(nèi)存,怎么還會出現(xiàn)內(nèi)存泄漏的情況呢下一條:java - Android studio 新項(xiàng)目運(yùn)行結(jié)果都是Process finished with exit code 0
相關(guān)文章:
1. mysql - 表名稱前綴到底有啥用?2. 哭遼 求大佬解答 控制器的join方法怎么轉(zhuǎn)模型方法3. 在mybatis使用mysql的ON DUPLICATE KEY UPDATE語法實(shí)現(xiàn)存在即更新應(yīng)該使用哪個標(biāo)簽?4. sql語句 - 如何在mysql中批量添加用戶?5. mysql - 數(shù)據(jù)庫表中,兩個表互為外鍵參考如何解決6. 編輯成功不顯示彈窗7. tp 6.0 數(shù)據(jù)查詢,求教!8. 為什么php修改數(shù)據(jù)無法同步到數(shù)據(jù)庫,只是當(dāng)前頁面修改成功?9. mysql儲存json錯誤10. 怎么php怎么通過數(shù)組顯示sql查詢結(jié)果呢,查詢結(jié)果有多條,如圖。
排行榜

熱門標(biāo)簽