私は最も簡単な方法は、それがのAtomicIntegerの値だ格納する自分に対抗ラッピングを構築することであると思うだろう、
public class AtomicWrappingCounter {
private AtomicInteger value;
private final int max;
public AtomicWrappingCounter(int start, int max) {
this.value = new AtomicInteger(start);
this.max = max;
}
public int get() {
return value.get();
}
/* Simple modification of AtomicInteger.incrementAndGet() */
public int incrementAndGet() {
for (;;) {
int current = get();
int next = (current + 1) % max;
if (value.compareAndSet(current, next))
return next;
}
}
}
のようなもの
はなぜAtomicInteger
はこの自分自身のようなものを提供していませんか?誰が知っているのですが、私は、並行性フレームワークの作者の意図は、独自のより高いレベルの機能をよりうまく作成するために使用できるビルディングブロックを提供することだったと思います。
説明と実装のためにマイケルに感謝します。 – Mark