作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个线程和一个原子整数。两者都运行 1000 次迭代的循环。一个线程递增 1,另一个线程递减 1。结果最后是0。
目前很好。
但是 a) 当由于 CAS 失败而无法编辑变量时,一个线程是否会等待下一条语句,或者 b= 每个线程是否都有第二个后台线程(隐式创建)来编辑变量并等待直到可以编辑变量?
第二个假设 (b) 没有意义,因为我得到了返回值,但我最好问一下。
最佳答案
AtomicInteger 使用硬件/CPU 级同步,线程将在 CAS 尝试失败之前等待特定的时间(假设 a. 部分正确)。此 wiki 有更多详细信息 https://en.wikipedia.org/wiki/Compare-and-swap
关于java - 线程是否会等到可以编辑(例如 addAndGet)原子变量为止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55993705/
我有两个线程和一个原子整数。两者都运行 1000 次迭代的循环。一个线程递增 1,另一个线程递减 1。结果最后是0。 目前很好。 但是 a) 当由于 CAS 失败而无法编辑变量时,一个线程是否会等待下
我正在查看 AtomicInteger 类中 addAndGet 方法的 Java(Java 6) 源代码。 对应的代码如下: public final int addAndGet(int delta
在 Java 的包 java.util.concurrent.atomic AtomicInteger 类中有一个方法 addAndGet(int) 这是 public final int addAn
我是一名优秀的程序员,十分优秀!