我们如何使用AtomicInteger进行有限的序列生成,例如序列号必须在1到60之间。一旦序列达到60,它必须从1开始重新开始。我写了这段代码,虽然不太确定这是线程安全还是不安全?AtomicInteger用于有限序列生成
public int getNextValue()
{
int v;
do
{
v = val.get();
if (v == 60)
{
val.set(1);
}
}
while (!val.compareAndSet(v , v + 1));
return v + 1;
}
+1。这真的很有用 – satish 2010-06-02 18:10:24
如果你找到一个真正有用的答案,点击复选标记接受它。 – naiad 2010-06-02 18:19:23
奇怪的实现。基本上它说“如果还没有改变就加1,否则继续尝试”。难道这不能在理论上导致无限循环? – 2010-09-29 20:16:02