线程是否会等到它可以编辑(例如,addAndGet)原子变量?

时间:2019-05-05 15:43:33

标签: java atomicinteger

我有两个线程和一个原子整数。两者都运行1000次迭代的循环。一个线程增加一,其他线程减少一。结果在0结尾。
目前很好。
但是a)一个线程是否由于CAS失败而无法编辑变量时是否等待下一个语句,或者b =每个线程是否都有第二个后台线程(隐式创建)来编辑变量并等待,直到它可以编辑变量? /> 第二个假设(b)没有意义,因为我得到了返回值,但我最好问一下。

1 个答案:

答案 0 :(得分:0)

AtomicInteger使用硬件/ CPU级同步,并且线程将在CAS尝试失败之前等待特定的时间(假设a。部分正确)。此Wiki有更多详细信息https://en.wikipedia.org/wiki/Compare-and-swap