- 래치와 비슷(이벤트가 발생할 때까지 대기)
- But, 모든 스레드가 배리어 위치에 동시에 이르러야 한다.
- 래치는 '이벤트'를 기다리기 위한 동기화 클래스이고, 배리어는 '다른 스레드'를 기다리기 위한 동기화 클래스이다.
- "모두들 오후6시까지 출판사에서 만나자. 일단 약속 장소에 도착하면 모두 도착할 때까지 대기하고, 모두 도착하면 어디로 이동할지는 모두 모인 이후에 생각하자"
- CyclicBarrier 클래스를 사용하면 여러 스레드가 특정한 배리어 포인트에서 반복적으로 서로 만나는 기능을 모델링할 수 있따.
- 커다란 문제 하나를 여러 개의 작은 부분문제로 분리해 반복적으로 병렬 처리하는 알고리즘을 구현하고자 할 때 적용하기 좋다.
- 스레드는 각자 배리어 포인트에 다다르면 await 메소드를 호출하며, await 메소드는 모든 스레가 배리어 포인트에 도달할 때까지 대기한다.
- 배리어가 성공적으로 통과하는 await메소드는 가 스레드별로 배리어 포인트에 도착한 순서를 알려준다.
- 이 정보로 리더를 산출하는데 사용할 수 있다.
- But, 모든 스레드가 배리어 위치에 동시에 이르러야 한다.
- 래치는 '이벤트'를 기다리기 위한 동기화 클래스이고, 배리어는 '다른 스레드'를 기다리기 위한 동기화 클래스이다.
- "모두들 오후6시까지 출판사에서 만나자. 일단 약속 장소에 도착하면 모두 도착할 때까지 대기하고, 모두 도착하면 어디로 이동할지는 모두 모인 이후에 생각하자"
- CyclicBarrier 클래스를 사용하면 여러 스레드가 특정한 배리어 포인트에서 반복적으로 서로 만나는 기능을 모델링할 수 있따.
- 커다란 문제 하나를 여러 개의 작은 부분문제로 분리해 반복적으로 병렬 처리하는 알고리즘을 구현하고자 할 때 적용하기 좋다.
- 스레드는 각자 배리어 포인트에 다다르면 await 메소드를 호출하며, await 메소드는 모든 스레가 배리어 포인트에 도달할 때까지 대기한다.
- 배리어가 성공적으로 통과하는 await메소드는 가 스레드별로 배리어 포인트에 도착한 순서를 알려준다.
- 이 정보로 리더를 산출하는데 사용할 수 있다.
'JAVA이야기' 카테고리의 다른 글
Excutor 프레임웍 (0) | 2011.08.28 |
---|---|
작업별로 스레드를 만드는 것은 자원관리 측면에서 허점이 있다. (0) | 2011.08.28 |
futureTask (0) | 2011.08.27 |
CountDownLatch (0) | 2011.08.27 |
반복문을 실행하는 코드를 동기화시키는 방법은 비효율적이다. (0) | 2011.08.27 |