Java Concurrency in Practice


Java Concurrency in Practice
를 읽었다.  Concurrent Programming in Java 책을 사다가 아마존에서 추천에 낚여 덜컥 산 책이었는데 알고 보니 매우 좋은 평을 받고 있는 책이었다.  읽어 보니 내용도 아주 좋았고 읽기도 쉬웠다.  그런데 알고 보니 이 책은 2006년에 나온 책이었다. 그간 이것저것 잡다한 것에 관심을 갖고 공부에 게을리했더니만 어느덧 시대의 흐름에 뒤떨어졌구나라는 생각이 들었다.

이 책은 자바에서 병행성(concurrency)에 관해 매우 실제적인 측면에서 설명하고 있다. 자바의 기본 병행성 도구인 스레드(thread)를 다루는 여러 방법을 설명하고 있다.  또 실제 구현을 할 때 큰 도움을 주는 java.util.concurrent 라이브러리도 자세히 설명하고 있다. 데드락을 피하는 법이나 스레드 모니터링, 테스팅에 관해서도 언급하고 있고 성능 문제에 관해서도 잘 설명하고 있다.  아주 많은 것을 배운 책이었다.  스레드를 시작할 줄 알고, synchronized 키워드나 wait, notify 정도만 알고 있고 왜 double check locking이 위험한지, volatile이 무엇인지, InterruptedException은 어떻게 처리해야 하는지, java.util.concurrent 패키지에는 무엇이 들어있는지 모른다면 이 책을 읽으면 된다.

이 책에서 다루고 있는 내용을 생각나는대로 한번 나열해 보면 다음과 같다.
  • 자바 병행성과 관련한 두 가지 문제: 접근 제어와 memory visibility 문제
  • 병행성 관련하여 데이타를 다루는 방법: no share, immutable, thread confinement, guarded mutable object share
  • Publish / Escape
  • 작업(Task)와 스레드(Thread) 관리의 분리: Executor. Future, ThreadPool
  • condition: Latch, Semaphore, Barrier, BlockingQueue 등
  • 스레드의 취소, 중지: interrupt
  • Concurrent Collection 라이브러리
  • Lock Contention
  • Thread dump
  • Atomic variable. CAS(Compare-And-Swap), Nonblocking Algorithm, Optimistic

by Corund | 2008/06/10 11:48 | 트랙백

◀ 이전 페이지다음 페이지 ▶