2016-11-18 40 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

相關問題