[英]Is there locking in the Atomic compareAndSet method in Java?
如果我有類似的東西:
AtomicReference<String> atomicReference = new AtomicReference<>("abc");
我有 2 個線程執行代碼:
線程 1: atomicReference.compareAndSet("abc", "def")
線程 2: atomicReference.compareAndSet("abc", "efg")
是否存在兩個線程同時執行此操作並找到已聲明的值“abc”並都執行該方法的情況,或者如果一個線程執行 compareandset 其他線程將不得不等到它完成(基本上是某種鎖定機制) ?
一般來說,合理的實現不會對原子compareAndSet
使用鎖。 一些舊的/非常低端的 32 位架構可能會為AtomicLong
使用鎖。
方法體可能(某些體系結構)允許一次由多個線程執行,但只有一個可以成功。
也許可能會發生兩個線程同時執行的情況。 但總是只有一個“贏家”,只有一個會成功。
從文檔中:
Package java.util.concurrent.atomic
一個小的類工具包,支持對單個變量進行無鎖線程安全編程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.