백엔드기술/개발언어

CountDownLatch을 이용하여 Thread 사용시 모든 쓰레드 종료 기다리기

RevFactory 2013. 9. 24. 11:44

CountDownLatch 을 사용하면 멀티 쓰레드 사용시 모든 쓰레드 종료 시점을 알 수 있다.


간단한 예제 코드


private static AtomicInteger _nextInc = new AtomicInteger(

(new java.util.Random()).nextInt());



final List<Integer> list = Collections.synchronizedList(new ArrayList<Integer>());

final CountDownLatch latch = new CountDownLatch(10000);


for(int i = 0 ; i < 10000 ; i++) {

Thread thread = new Thread() {

public void run() {

list.add(_nextInc.getAndIncrement() & 0xFF);

latch.countDown();

}

};

thread.start();

}

try {

latch.await();

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

Collections.sort(list);

for(int n : list) {

System.out.println(n);

}