2016-11-18 83 views
0

是否有任何方法使这个操作像一个operatinon(自定义原子类型)?检查AtomicBoolean并执行某些操作的最安全方法是什么?

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

写详细:问题描述非常短。写一些解释abt'isShutdownStarted'和'request' –

回答

0

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

如果您需要进行本质上非原子操作或序列原子操作,则需要使用锁定;例如一个原始互斥体,一个Lock或其他等效物。

+0

thx u,Stephen! – ArthurDn

相关问题