JAVA이야기

Barrier

НooпeУ 2011. 8. 28. 14:11
- 래치와 비슷(이벤트가 발생할 때까지 대기)
- But, 모든 스레드가 배리어 위치에 동시에 이르러야 한다.

- 래치는 '이벤트'를 기다리기 위한 동기화 클래스이고, 배리어는 '다른 스레드'를 기다리기 위한 동기화 클래스이다.
- "모두들 오후6시까지 출판사에서 만나자. 일단 약속 장소에 도착하면 모두 도착할 때까지 대기하고, 모두 도착하면 어디로 이동할지는 모두 모인 이후에 생각하자"

- CyclicBarrier 클래스를 사용하면 여러 스레드가 특정한 배리어 포인트에서 반복적으로 서로 만나는 기능을 모델링할 수 있따.
- 커다란 문제 하나여러 개의 작은 부분문제분리반복적으로 병렬 처리하는 알고리즘을 구현하고자 할 때 적용하기 좋다.

- 스레드는 각자 배리어 포인트에 다다르면 await 메소드를 호출하며, await 메소드는 모든 스레가 배리어 포인트에 도달할 때까지 대기한다.

- 배리어가 성공적으로 통과하는 await메소드는 가 스레드별로 배리어 포인트에 도착한 순서를 알려준다.
- 이 정보로 리더를 산출하는데 사용할 수 있다.