簡體   English   中英

Java中的Atomic compareAndSet方法是否有鎖定?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM