2016-11-18 14 views
0

この操作を1つの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

関連する問題