java.util.concurrent.atomic.AtomicBoolean不是有一个方法可以自动否定/反转值吗?我可以用另一种方式做吗?我是不是遗漏了什么?
发布于 2012-09-28 04:40:57
有点老了..。但我觉得答案并不是很好。
必须完全不同意这是不常见的或仅在硬件中有用的说法。您可能希望多个线程以相等的可能性切换到单个变量...我用AtomicLong做了一个假的布尔值。这是从JMS MessageListener中采用的,我需要一半的时间响应特定的消息,另一半时间响应另一种类型的消息。
public class Mock {
private static AtomicLong count = new AtomicLong(0);
public boolean respond() {
long currentCount = count.getAndIncrement();
if (currentCount % 2 == 0) {
return true;
} else {
return false;
}
}
}发布于 2009-08-10 15:40:54
我的简单实现是这样的:
boolean v;
do {
v=atomicBoolean.get();
} while(!atomicBoolean.compareAndSet(v, !v));发布于 2018-04-16 20:09:19
您可以通过使用AtomicInteger.getAndIncrement()并将偶数视为true、奇数视为false来模拟AtomicBoolean.negate()。应该忽略该数字的实际值,这样您就不会关心整数溢出。
https://stackoverflow.com/questions/1255617
复制相似问题