2014-11-04 4 views
0

모든 스레드가 실행될 때를 나타내는 플래그를 설정하는 방법에 관한 정보를 가진 사람이 있는지 궁금합니다.모든 스레드가 실행 완료 될 때를 나타내는 플래그를 설정하는 방법

나는 동시에 실행되는 7 개의 스레드가 있지만 다른 모든 서비스로 전환 할 수 있도록 데이터베이스 테이블을 업데이트하는 방법을 실행하기 위해 모든 작업이 완료되면 표시하도록 플래그를 설정해야합니다. 누군가가 옳은 방향으로 나를 가리킬 수 있다면 그것이 좋을 것 같아서 쓰레드를 사용하고있는 것은 이번이 처음입니다.

+2

당신은 (... 다시 그들 각각에') – TheLostMind

+2

를 사용할 수 있습니다 또는 단지'(가입 호출, 참조를 위해이 시도) 메인 스레드에서 .. –

+0

을 앞에'CountDownLatch' 또는'CyclicBarrier' – Vijay

답변

3

CountDownLatch으로 시도 할 수 있습니다. 귀하의 요구 사항을 완벽하게 채울 것입니다.해야 할 일은 CountDownLatch 인스턴스를 스레드 수와 동일한 count value으로 생성하는 것입니다. 모든 스레드를 시작하고 메인 스레드에서 await 메서드를 호출하십시오. 모든 스레드에서 CountDownLatch 개체 참조를 가져 와서 자체 스레드를 완료 한 후에 각 스레드에서 countDown 메서드를 호출하십시오. 각 countDown 메소드에 대해 CountDownLatch 카운트 값이 감소합니다. zero에 도달하면 기다리는 메소드가 깨어납니다. Note if any one of your thread fails to call countDown then await will never get wake-up.

당신은 결합 부를 수 http://www.java-redefined.com/p/java-count.html

2

join 메서드를 사용하면 각 스레드가 실행을 마칠 때까지 대기합니다.

for (Thread t : threads) { 
    t.join(); 
} 
0

스레드를 직접 사용하는 경우 CountDownLatch을 확인하십시오. 워크 플로의 복잡성에 따라 Phaser을 선호 할 수 있습니다.

관련 문제