文章詳情頁
java - 如何理解AtomicInteger里的CAS操作?
瀏覽:96日期: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,導致compareAndSet()返回false,那這就表面已經不是原子性了吧,還繼續(xù)重復有啥意義?
問題解答
回答1:它只是要實現(xiàn)寫操作不會被覆蓋掉,多線程情況下不會計算錯誤,如果按照你這么想要實現(xiàn)原子性,只能使用鎖了,但是這樣效率會低。
標簽:
java
上一條:既然 Java 的垃圾回收機制能夠自動的回收內存,怎么還會出現(xiàn)內存泄漏的情況呢下一條:java - Android studio 新項目運行結果都是Process finished with exit code 0
相關文章:
1. python文檔怎么查看?2. python - pycharm 自動刪除行尾空格3. 安全性測試 - nodejs中如何防m(xù)ySQL注入4. python - pandas按照列A和列B分組,將列C求平均數,怎樣才能生成一個列A,B,C的dataframe5. python - Pycharm的Debug用不了6. html - eclipse 標簽錯誤7. python 利用subprocess庫調用mplayer時發(fā)生錯誤8. 請問PHPstudy中的數據庫如何創(chuàng)建索引9. datetime - Python如何獲取當前時間10. javascript - 有適合開發(fā)手機端Html5網頁小游戲的前端框架嗎?
排行榜
