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

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

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

瀏覽:109日期: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
相關文章:
主站蜘蛛池模板: 历史| 隆尧县| 青浦区| 乌苏市| 长兴县| 六安市| 肥东县| 崇文区| 康马县| 金寨县| 琼结县| 韶山市| 西华县| 大化| 固镇县| 泽库县| 苏尼特左旗| 郓城县| 宕昌县| 友谊县| 景德镇市| 全南县| 青岛市| 洛宁县| 瑞昌市| 南汇区| 庄河市| 定兴县| 辉南县| 额尔古纳市| 龙游县| 鞍山市| 杂多县| 万盛区| 堆龙德庆县| 湄潭县| 东至县| 喀什市| 徐州市| 永川市| 中阳县|