私はソースコード java.util.concurrent.atomic.AtomicIntegerを調べて、クラスによって提供されるアトミック操作によってどの程度のアトミック性が達成されているか調べました。java.util.concurrent.atomicパッケージで定義されたクラスで、どの程度のアトミック性が達成されますか?
public final int getAndIncrement() {
for (;;) {
int current = get();
int next = current + 1;
if (compareAndSet(current, next))
return current;
}
}
Iはループの無限の内部動作のシーケンスを書き込む目的を理解することができませんが、以下のように、例えば、 AtomicInteger.getAndIncrement()メソッド源です。 Java Memory Model(JMM)の特別な目的を果たしますか?わかりやすい説明を見つけてください。前もって感謝します。
そのループでメソッドが呼び出されていて、そのメソッドの結果がループを解除する条件であることを無視しているようです。 Googleの "比較とスワップ" –
これは古典的なユースケースです。 'goto'less言語では、無限ループを使います。 –