책 이미지

책 정보
· 분류 : 국내도서 > 컴퓨터/모바일 > 프로그래밍 언어 > 자바
· ISBN : 9788980544387
· 쪽수 : 378쪽
· 출판일 : 2001-05-29
책 소개
목차
시작하기 전에
Chapter 1 쓰레드 아키텍쳐
쓰레드의 문제점
- 실제 사용되는 모든 자바 프로그램은 멀티 쓰레드를 사용한다.
- 자바의 쓰레드에 대한 지원은 플랫폼에 독립적이지 않다.
쓰레드와 프로세스
쓰레드 안전성과 동기화
- 동기화는 비효율적이다.
- 동기화 피하기
동시적인 처리. 어떻게 해야할까?
실제로 사용되는 쓰레드 모델들 협력하라!
- 협력형 멀티 쓰레드 모델
- 선점형 멀티 쓰레드 모델
- 커널 쓰레드를 사용자 프로세스로 매핑하기
이 장을 마치며
Chapter 2 고난의 멀티 쓰레드 프로그래밍
모니터와 상호 배제 세마포어(뮤텍스, Mutex)
경쟁상태와 스핀 락
- Spin_lock 클래스
쓰레드는 객체가 아니다
교착상태(Deadlock)
실전! 교착상태
중첩된 모니터에 의한 교착상태
- 동기화 랩퍼
타임아웃
- 코딩 스타일에 대한 여담
supend() 메소드가 더 이상 사용되지 않는 이유
블록킹 I/O에서의 교착상태
쓰레드 멈추기
기아 상태(Starvation)와 run()에 대한 동기화
volatile 키워드
예외와 쓰레드
이 장을 마치며
Chapter 3 뮤텍스와 락 관리
synchronized 만으로는 해결할 수 없는 문제들
synchronized를 넘어서서
비법 공개, 세마포어 제작 : Semaphore 인터페이스
세마포어의 관리와 교착상태를 피하는 락
- 여담 : 부치 유틸리티(Booch Utility)와 전략(Strategy)
관리가능한 뮤텍스 클래스 만들기
이 장을 마치며
Chapter 4 조건 변수와 카운팅 세마포어(Counting Semaphore)
조건 변수
- 조건변수와 wait()
- 무적의 해결사 : 조건 변수
- 조건 변수 구현하기
조건 변수 집합 : 여러 조건 기다리기
자원 풀을 위한 카운팅 세마포어
이 장을 마치며
Chapter 5 Timer, Alarm 그리고 스윙의 쓰레드 안전성
왜 Timer를 쓰는가?
스윙과 쓰레드 : 스윙은 쓰레드에 안전하지 않다.
- invokeLater()와 invokeAndWait() 메소드
스윙 Timer 길들이기
- Timer 작동의 실체를 밝혀라
- 언제 Timer를 쓸까?
자체제작, Alarm 클래스
- Alarm의 구조
- "통지"의 실체를 밝힌다.
- Alarm 재시작하기(쓰레드 멈추기)
- 잠시 멈추기
- Notifier의 문제점
- 단위 테스트
이 장을 마치며
Chapter 6 관찰자(Observers)와 멀티캐스터(Multicasters)
멀티 쓰레드 환경에서 관찰자 구현하기
관찰자 입장에서의 문제점 : 내부 클래스의 동기화
통지자 입장에서의 문제점 : 멀티 쓰레드 환경에서의 통지
AWTEventMulticaster의 비밀
- 불변객체와 초기화되지 않은 final
- 멀티캐스터 사용하기
멀티캐스터 만들기
Chapter 7 싱글톤, 임계 영역 그리고 읽기/쓰기 락
임계 영역(Critical Section), 싱글톤 그리고 "클래스 객체"
- 정적 멤버
싱글톤(Singletons)
- 다중 CPU 환경에서의 임계 영역, 이중 체크 락 그리고 캐시와 관련된 문제점
- 예제로 이해하는 싱글톤 : Std 클래스
- 싱글톤 닫기
읽기/쓰기 락
이 장을 마치며
Chapter 8 객체 지향적 관점에서의 쓰레드
객체 지향 시스템에서의 쓰레드 모델링
- 동기 메시지와 비동기 메시지
- 메소드 당 하나의 쓰레드를 사용해서 비동기 메시지 구현하기
- 출동, 예외를 처리하라!
쓰레드 풀과 블록킹 큐
- 블록킹 큐
- 쓰레드 풀장에서 헤엄치기
- 매개변수 넘기기
- 인트로스펙션을 이용한 매개변수 넘기기
- 쓰레드 풀 구현하기
- 쓰레드 풀 사용하기
소켓과 쓰레드 풀
이 장을 마치며
Chapter 9 객체 지향적 쓰레드 아키텍쳐
리액터(Reactor)와 활성 객체(Active Object)
동기적인 디스패쳐와 라운드 로빈(Round robin) 스케줄링 :
- 리액터(Reactor)와 프로액터(Proactor)
비동기적인 디스패치 : 활성 객체(Active Object)
- 범용적인 해결책
- 정돈된 콘솔 출력을 위해
이 장을 마치며
Chapter 10 내가 만약 왕이라면 : 자바의 쓰레딩 모델 고치기
태스크의 도입
synchronized의 개선
wait()와 notify()의 개선
Thread 클래스의 문제점 보완
쓰레드 간의 공동작업
읽기/쓰기 락에 대한 지원
생성중인 객체에 대한 접근 거부
volatile 키워드의 올바른 동작
접근에 대한 개선
- 불변성에 대한 지원 강화
- 클래스 필드에 대한 인스턴스 차원의 접근 제한
싱글톤에 대한 개선
데몬 쓰레드의 안전한 종료
stop(), suspend(), resume()의 부활
블록킹 I/O의 개선
ThreadGroup 클래스의 보완
이 장을 마치며