AtomicInteger 和AtomicBoolean 类似
什么时候使用AtomicInteger
一般我们可以把它作为一个原子计数器来使用,例,生成伪随机数
public class AtomicPseudoRandom extends PseudoRandom {
private final AtomicInteger seed;
AtomicPseudoRandom(int seed) {
this.seed = new AtomicInteger(seed);
}
public int nextInt(int n) {
while (true) {
int s = seed.get();
int nextSeed = calculateNext(s);
if (seed.compareAndSet(s, nextSeed)) {
int remainder = s % n;
return remainder > 0 ? remainder : remainder + n;
}
}
}
}
public class PseudoRandom {
int calculateNext(int prev) {
prev ^= prev << 6;
prev ^= prev >>> 21;
prev ^= (prev << 7);
return prev;
}
}
分享到: