这只是一个概念:
如何确保我的值永不冲突或我的函数正在查看尚未更新的旧值?
我是线程新手,所以任何信息都是有价值的。
这是AtomicInteger
的工作!
AtomicInteger atomic;
...
int newValue = atomic.accumulateAndGet(rand, Math::max);
如何确保我的价值观永不冲突
如果需要询问,那么我会说,使用同步块:
final Object lock = new Object();
int global_r = 0;
...
while (true) {
int r = random.nextInt();
synchronized(lock) {
if (r > global_r) {
global_r = r;
break;
}
}
}