[ 최고의 병행 프로그래밍 책! ] 이 책은 자바에서 병행 프로그래밍을 생각하고, 설계하고, 구현하는 몇 가지 방법을 제시해줍니다. 책에 나오는 대부분의 설명은 객체지향 프로그래밍에는 익숙하지만 병행 프로그래밍에는 다소 미숙한 개발자를 대상으로 하였고, 다른 언어에서 병행 프로그래밍을 다루었지만 객체지향 프로그래밍에는 미숙한 개발자에게도 아주 유용한 도서가 될 것입니다.
이 책은 네 개의 부(part)로 구성되었습니다. 높은 수준의 설계 원칙, 전략, 구현에 관련된 세부적인 기술 사항을 설명하고, 또한 일반적으로 사용할 수 있는 활용 방안을 요약한 내용과 특정 병행 문제를 중점적으로 다루는 설계 패턴을 설명합니다. 장(chapter)마다 설명이 달린 참고 문헌을 실었으며, 이를 통해 해당 주제에 대해 좀더 많은 정보를 얻을 수 있도록 구성하였습니다.
이 책을 읽는 독자들은 병행 프로그래밍에 관련된 패턴과 트레이드오프를 이해함으로써 자바 플랫폼의 스레딩 모델을 정교하게 활용하는 방법을 알게 될 것입니다.
[ 자바 프로그래밍 언어의 특징 ] 자바 플랫폼은 폭넓고 강력한 API, 툴, 기술을 제공합니다. 가장 강력한 기능 중 하나는 스레드 지원 기능이 내장되어 있다는 점으로, 자바 프로그래밍 언어를 사용하는 프로그래머들에게 있어 이런 특징은 병행 프로그래밍을 매력적으로 보이게 할 뿐만 아니라 도전해 보고 싶은 욕구를 불러일으키는 요소가 되고 있습니다.
이 책에서는 java.lang.Thread 클래스, synchronized와 volatile 키워드, wait 메소드, notify 메소드, notifyAll 메소드를 사용하여 병행 프로그래밍을 어떻게 시작하고, 제어하고, 조정하는지 그 방법을 터득하게 될 것입니다. 또한 제한, 동기화, 데드록, 충돌, 상태 의존적인 액션 제어, 동기적인 메시지 전달 및 제어 흐름, 공동 인터랙션, 웹 기반 및 계산이 필요한 서비스의 구조화 방법 등을 포함하여 병행 프로그래밍의 전 영역을 상세하게 연구할 수 있을 것입니다.
목차
▣ 목 차
제1부 병행 객체지향 프로그래밍 제1장 병행 컨스트럭트 활용 1. Particle 애플릿 2. 스레드의 구조 3. 참고 문헌
제2장 객체와 병행 1. 병행 2. 병행 실행 컨스트락트 3. 병행과 객체지향 프로그래밍 4. 객체 모델과 맵핑 5. 참고 문헌
제3장 설계시 고려 사항 1. 안정성 2. 유효성 3. 성능 4. 재사용성 5. 참고 문헌
제2장 동기화 1. 역학 2. 완전히 동기화된 객체들 3. 횡단 4. 스태틱과 싱글톤 5. 데드록 6. 리소스 어더링 7. 자바 메모리 모델 8. 참고 문헌
제3장 제한 1. 메소드 제한 2. 스레드에서의 제한 3. 객체에서의 제한 4. 그룹에서의 제한 5. 참고 문헌
제4장 클래스 구성 및 클래스 재구성 1. 동기화 줄이기 2. 동기화 분리 3. 읽기-전용 어댑터 4. Copy-on-Write 5. 개방형 컨테이너 6. 참고 문헌
제5장 록 유틸리티의 활용 1. Mutex 2. 읽기-쓰기 록 3. 참고 문헌
제3부 상태 의존성 제1장 오류 처리 1. 예외 2. 무효화 3. 참고 문헌
제2장 보호 메소드 1. 보호 중지 2. 모니터 머신 3. 보호 대기 4. 통고 5. 시간 지정 대기 6. 바쁜 대기
제3장 클래스 구성 및 재조립 1. 상태 추적 2. 충돌 세트 3. 서브클래싱 4. 제한과 중첩 모니터 5. 참고 문헌
제4장 병행 컨트롤 유틸리티의 활용 1. 세마포어 2. 래치 3. 교환자 4. 조건 변수 5. 참고 문헌
제5장 조인트 액션 1. 인반적인 솔루션 2. 관찰자 분리 3. 참고 문헌
제6장 트랜잭션 1. 트랜잭션 프로토콜 2. 트랜잭션 참가자 3. 트랜잭션 생성 4. 거부할 수 있는 변경 5. 참고 문헌
제7장 유틸리티 구현 1. 획득-해제 프로토콜 2. 위임 액션 3. 특수한 통고 4. 참고 문헌
제4부 스레드 생성 제1장 단방향 메시지 1. 메시지 형식 2. 오픈 호출 3. 스레드-퍼-메시지 4. worker 스레드 5. 폴링과 이벤트-중심의 IO 6. 참고 문헌
제2장 단방향 메시지 작성 1. 구성 2. 어셈블리 라인 3. 참고 문헌
제3장 스레드의 서비스 1. 완료 콜백 2. 스레인 조인 3. Future 4. 서비스 일정 수립 5. 참고 문헌
제4장 병렬 분해 1. 포크/조인 2. 계산 트리 3. 배리어 4. 참고 문헌
제5장 액티브 객체 1. CSP 2. 참고 문헌
[ Part별 내용 요약 ] 제1부 병행 객체지향 프로그래밍 여기에서는 자주 사용되는 컨스트럭트를 살펴본 후 병행 객체지향 프로그래밍의 개념적인 부분을 설명합니다. 즉 병행과 객체가 어떻게 함께 조화되는지, 설계가 클래스와 컴포넌트의 구현에 어떻게 영향을 미치는지, 일반적인 설계 패턴을 솔루션의 구성에 어떻게 사용할 수 있는지 설명합니다.
제2부 배제 여기에서는 자바 프로그래밍 언어에 있는 세 종류의 병행 컨스트럭트 중에 배제(exclusion)를 설명합니다. 병행 액션이 이루어지는 동안 원치 않는 간섭을 방지함으로써 객체들의 일관된 상태를 유지하며, 흔히, 동기화된 메소드(synchronized method)를 사용합니다.
제3부 상태 의존성 여기에서는 자바 프로그래밍 언어에 있는 세 종류의 병행 컨스트럭트 중에 상태 의존(state dependence)을 설명합니다. 객체에서 액션이 성공할 수 있는지, 성공하였는지 그 상태에 따라 액션을 호출, 보존, 연기, 복구합니다. 가끔 모니터(monitor) 메소드인 Object.wait, Object.notify, Object.notifyAll을 사용합니다.
제4부 스레드 생성 여기에서는 자바 프로그래밍 언어에 있는 세 종류의 병행 컨스트럭트 중에 스레드의 생성(thread creation)을 중점적으로 다루고 있습니다. Thread 객체를 이용하여 병행을 수립하고 관리합니다.
[ 이런 분들에게 도움이 됩니다! ] 이 책의 주된 독자는 복잡한 병행 프로그래밍을 마스터하는데 관심을 가지고 있는 중고급 프로그래머입니다. 이 책에서는 설계 패턴과 관련하여 일반적인 병렬 프로그래밍 문제를 해결하는 컴포넌트를 생성하고 구현하는 기본적인 설계 기법을 설명합니다. 본문에 나오는 예제들을 이해할 경우 논의되고 있는 병렬 프로그래밍 개념의 미묘한 부분을 가시화하는데 도움이 될 것입니다.
▣ 저 자
덕 리(Doug Lea)
객체지향 기술과 소프트웨어 재사용 분야에서 선두 그룹을 이끌고 있는 사람들 중 한 명으로, 8년 이상 썬 랩에서 공동 연구를 진행하고 있습니다.
SUNY Oswego 대학의 전산학과 교수이며, ATCP(Advanced Technology in Computer Applications)의 뉴욕 센터에 있는 소프트웨어 공학 연구실을 공동으로 이끌고 있으며, Syracuse 대학에서 전자 컴퓨터 공학과의 조교수로 활동하고 있습니다.
이외에 덕 리는 Object-Oriented System Development(Addison-Wesley, 1993)의 공동 저자이며, New Hampshire 대학에서 B.A., M.A., Ph.D를 받았습니다.