티스토리 뷰

동시성 유틸리티

  • 실행자 프레임워크
  • 동시성 컬렉션(concurrent collection)
  • 동기화 장치(synchroonizer)

동시성 컬렉션

  • 표준 컬렉션 인터페이스에 동시성을 가미해 구현한 고성능 컬렉션
  • 동기화한 컬렉션보다 동시성 컬렉션을 사용하는게 더 좋다. Collections.synchronizedMap보다는 ConcurrentHashMap을 사용하는게 훨씬 좋다
  • BlockingQueue 의 take 메소드는 큐의 첫 원소를 꺼내는데 큐가 비어있으면 새로운 원소가 추가 될때까지 기다린다(producer, consumer 큐로 쓰기 적합)

핵심 정리

wait와 notify를 직접 사용하는 것을 동시성 ‘어셈블리 언어’로 프로그래밍하는 것에 비유할 수 있다.반면 java.util.concurrent는 고수준 언어에 비유할 수 있다.코드를 새로 작성한다면 wait와 notify를 쓸 이유가 거의(어쩌면 전혀) 없다. 이들을 사용하는 레거시 코드를 유지보수해야 한다면 wait는 항상 표준 관용구에 따라 while문 안에 서 호출하도록 하자. 일반적으로 notify보다는 notifyAll을 사용해야 한다. 혹시라도 notify를 사용한다면 응답 불가 상태에 빠지지 않도록 각별히 주의하자.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Today
Yesterday
링크
«   2024/12   »
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
글 보관함