티스토리 뷰

병행(Concurrency)과 병렬(Parallelism)의 차이

- 병행은 여러 작업을 번갈아가며 실행해 마치 동시에 여러 작업을 동시에 처리하듯 보이지만, 실제로는 한 번에 오직 한 작업만 실행한다 (CPU가 1개여도 가능)

- 병렬은 여러 작업을 동시에 처리한다 (CPU가 여러개 있어야 가능)

 

java.util.concurrent 패키지

- 병행(concurreny) 프로그래밍에 유용하게 사용할 수 있는 유틸리티 모음

- 자바의 concurrent 패키지는 병행 애플리케이션에 유용한 다양한 툴을 제공한다

  - BlockingQueue, Callable, ConccurentMap, Executor, ExecutorService, Future, ...

 

CountDownLatch

- 하나 이상의 스레드가 다른 스레드들의 작업이 끝날 때까지 대기하도록 만들 때 사용

- 카운터가 0이 될 때까지 await()를 호출한 스레드들이 블로킹

- 재사용할 수 있는 인스턴스는 아니고, 0이 되면 더 이상 유효하지 않음

- 재사용이 필요한 경우 CyclicBarrier 사용

  CountDownLatch CyclicBarrier
재사용 불가 (1회성) 가능 (자동 리셋)
용도 한쪽이 다른 쪽을 기다림 모든 스레드가 서로를 기다림
카운트 감소 주체 임의의 스레드가 호출 가능 배리어에 도착한 스레드 자신

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/07   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함