84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
下面这个方法,我不理解
public final int getAndIncrement() { for (;;) { int current = get(); int next = current + 1; if (compareAndSet(current, next)) return current; } }
为何要循环直到成功?如果这期间有另外的线程更改了value,导致compareAndSet()返回false,那这就表面已经不是原子性了吧,还继续重复有啥意义?
认证0级讲师
書き込み操作が上書きされず、マルチスレッドで計算エラーが発生しないことを実現したいだけです。アトミック性を最大限に実現したい場合は、ロックを使用するしかありませんが、これは非効率です。 。
書き込み操作が上書きされず、マルチスレッドで計算エラーが発生しないことを実現したいだけです。アトミック性を最大限に実現したい場合は、ロックを使用するしかありませんが、これは非効率です。 。