久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術文章
文章詳情頁

java - 如何理解AtomicInteger里的CAS操作?

瀏覽:101日期:2024-01-28 18:39:07

問題描述

下面這個方法,我不理解

public final int getAndIncrement() { for (;;) {int current = get();int next = current + 1;if (compareAndSet(current, next)) return current; }}

為何要循環直到成功?如果這期間有另外的線程更改了value,導致compareAndSet()返回false,那這就表面已經不是原子性了吧,還繼續重復有啥意義?

問題解答

回答1:

它只是要實現寫操作不會被覆蓋掉,多線程情況下不會計算錯誤,如果按照你這么想要實現原子性,只能使用鎖了,但是這樣效率會低。

標簽: java
相關文章:
主站蜘蛛池模板: 新田县| 繁昌县| 洪江市| 轮台县| 衡南县| 小金县| 尖扎县| 潮安县| 茌平县| 绥芬河市| 英山县| 朔州市| 都匀市| 霍邱县| 手机| 温州市| 乌什县| 徐汇区| 耒阳市| 安多县| 阜新市| 临清市| 涡阳县| 泰顺县| 泗洪县| 荆州市| 卢氏县| 嘉禾县| 新田县| 会昌县| 松江区| 五原县| 武冈市| 东丰县| 施甸县| 诸暨市| 敦煌市| 柘荣县| 抚宁县| 雅安市| 翁牛特旗|