2016-11-18 6 views
0

이 작업을 하나의 operatinon (사용자 정의 원자의 종류)처럼 만들 수있는 방법이 있습니까? 당신은 작업을 다른 작업 또는 순서가 원자 만들기 위해 AtomicBoolean을 사용할 수 없습니다AtomicBoolean을 확인하고 어떤 작업을 수행하는 가장 안전한 방법은 무엇입니까?

@Override 
public void contextDestroyed(ServletContextEvent servletContextEvent) { 
    PaymentClient.isShutdownStarted.set(true); 
    while (!PaymentClient.QUEUE.isEmpty()); 
} 
+1

자세히 작성 : 질문 설명은 매우 짧습니다. 몇 가지 설명을 작성하십시오 abt'isShutdownStarted' 및'request' –

답변

0

다른 스레드에서

if (!isShutdownStarted.get() 
      && !QUEUE.contains(request.getUserEmail())) { 
     try { 
      QUEUE.add(request.getUserEmail()); 
     } 
//... 
} 

코드입니다.

본질적으로 비 원자 단위 연산 또는 시퀀스를 원자 단위로 만들어야하는 경우 잠금을 사용해야합니다. 예 : 원시 mutex 인 Lock 또는 이와 동등한 것.

+0

thx u, Stephen! – ArthurDn