有没有办法让这个操作像一个操作(一种自定义原子)?
if (!isShutdownStarted.get()
&& !QUEUE.contains(request.getUserEmail())) {
try {
QUEUE.add(request.getUserEmail());
}
//...
}
其他帖子中的代码
@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {
PaymentClient.isShutdownStarted.set(true);
while (!PaymentClient.QUEUE.isEmpty());
}
答案 0 :(得分:0)
You cannot use an AtomicBoolean
to make another operation or sequence of operations atomic.
If you need to make an intrinsically non-atomic operation or sequence atomic, you need to use locking; e.g. a primitive mutex, a Lock
or something equivalent.