gimmesilver's blog

Agbird.egloos.com

포토로그



자바 병행 프로그래밍 시 실수하기 쉬운 문제들 프로그래밍

http://stackoverflow.com/questions/461896/what-is-the-most-frequent-concurrency-problem-youve-encountered-in-java

 원문 제목 그대로 자바에서 병행 프로그래밍을 할 때 자주 발생하는 문제들을 나열해 놓았습니다. 제가 이 블로그에서 언급했던 내용도 있고 어처구니없는 실수도 있고 정확히 알고 있지 않으면 착각하기 쉬운 것도 있고 어쨌든 한번쯤 훝어보고 상기해 볼만한 내용입니다.
 참고로 제가 최근에 했던 실수는 이것...

final CountDownLatch latcher = new CountDownLatch(n);
for (int i = 0; i < n; ++i) {
    executorService.submit(new Runnable() {
        public void run() {
            ...
            latcher.countDown();
        }
    });
}
latcher.wait();

흑...ㅜㅡ

 p.s. 혹시 CountDownLatcher 에 대해 모르시는 분이 있을까봐 첨언하자면 이름처럼 객체 생성 시 카운트다운 갯수를 지정하고 특정 조건에 이를때마다 카운트다운을 해서 0 에 이르면 빗장(latch) 를 엽니다. java.util.concurrent 패키지에 있습니다. 역시 같은 패키지에 있는 CyclicBarrier 와 함께, 기존의 notify(), wait() 를 대체할 수 있는 조건 동기화 클래스입니다. 원래 빗장이 열릴 때까지 기다리는 함수는 await() 인데 이게 wait() 함수랑 헷갈려요...

덧글

댓글 입력 영역