检查 AtomicBoolean 并执行某些操作的最安全方法是什么?

What is the safest way to check AtomicBoolean and perform something?

有没有什么方法可以使这个操作像一个操作(一种自定义原子)?

 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());
}

您不能使用 AtomicBoolean 使另一个操作或操作序列成为原子操作。

如果你需要使一个本质上非原子的操作或序列成为原子的,你需要使用锁;例如一个原始的互斥量,一个 Lock 或类似的东西。