国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

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

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

瀏覽:108日期: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
相關文章:
主站蜘蛛池模板: 桂阳县| 宝坻区| 宁安市| 齐齐哈尔市| 三江| 罗甸县| 延安市| 宁明县| 石台县| 石林| 龙川县| 大方县| 织金县| 东方市| 印江| 呼和浩特市| 五家渠市| 萝北县| 屏边| 获嘉县| 涞水县| 郯城县| 栾城县| 保靖县| 萨迦县| 嘉荫县| 轮台县| 兴城市| 将乐县| 驻马店市| 宿松县| 汉川市| 平顶山市| 青河县| 镇安县| 名山县| 建德市| 衡阳县| 浏阳市| 青川县| 松江区|