例如,如果我多次从多个线程和每个线程运行此代码,是否会有数据竞争?
public boolean swap(int i, int j) {
if (value.get(i) <= 0 || value.get(j) >= maxval) {
return false;
}
value.decrementAndGet(i);
value.incrementAndGet(j);
return true;
}
Run Code Online (Sandbox Code Playgroud)
顺便说一下,如果我在这里使用decrementAndGet或getAndDecrement有什么区别吗?
这里的值是AtomicIntegerArray.我需要在不同的同步方法中进行性能测试.所以我在值中交换elemtents,看看输出总和是否与预期相同
我的任务是找到一个"不应该是DRF"但"必须仍然无死锁"的方法,并且比ReentrantLock快得多.所以我很难找到一种有数据竞争的方法......