java检查原子布尔值并执行某些操作最安全的方法是什么?
有没有办法让这个操作像一个操作on(一种自定义原子)一样
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());
}
# 1 楼答案
不能使用
AtomicBoolean
使另一个操作或操作序列原子化如果需要进行本质上非原子的操作或原子序列,则需要使用锁定;e、 一个基本互斥体,一个
Lock
或类似的东西