목차 일부
추천의 글 ... 4
저자진 소개 ... 7
저자 서문 ... 8
옮긴이의 말 ... 10
이 책을 잘 읽는 방법 ... 24
1장 개요 ... 29
1.1 작업을 동시에 실행하는 일에 대한 (아주) 간략한 역사 ... 29
1.2 스레드의 이점 ... 31
1.3 스레드 사용의 위험성 ... 34
1.4 스레드는 어디에나 ... 39...
더보기
목차 전체
추천의 글 ... 4
저자진 소개 ... 7
저자 서문 ... 8
옮긴이의 말 ... 10
이 책을 잘 읽는 방법 ... 24
1장 개요 ... 29
1.1 작업을 동시에 실행하는 일에 대한 (아주) 간략한 역사 ... 29
1.2 스레드의 이점 ... 31
1.3 스레드 사용의 위험성 ... 34
1.4 스레드는 어디에나 ... 39
1부 기본 원리 ... 43
2장 스레드 안전성 ... 45
2.1 스레드 안전성이란? ... 47
2.2 단일 연산 ... 50
2.3 락 ... 55
2.4 락으로 상태 보호하기 ... 60
2.5 활동성과 성능 ... 62
3장 객체 공유 ... 67
3.1 가시성 ... 67
3.2 공개와 유출 ... 75
3.3 스레드 한정 ... 80
3.4 불변성 ... 85
3.5 안전 공개 ... 90
4장 객체 구성 ... 97
4.1 스레드 안전한 클래스 설계 ... 97
4.2 인스턴스 한정 ... 103
4.3 스레드 안전성 위임 ... 108
4.4 스레드 안전하게 구현된 클래스에 기능 추가 ... 119
4.5 동기화 정책 문서화 하기 ... 124
5장 구성 단위 ... 129
5.1 동기화된 컬렉션 클래스 ... 129
5.2 병렬 컬렉션 ... 137
5.3 블로킹 큐와 프로듀서-컨슈머 패턴 ... 142
5.4 블로킹 메소드, 인터럽터블 메소드 ... 150
5.5 동기화 클래스 ... 152
5.6 효율적이고 확장성 있는 결과 캐시 구현 ... 162
2부 병렬 프로그램 구조 잡기 ... 173
6장 작업 실행 ... 175
6.1 스레드에서 작업 실행 ... 175
6.2 Executor 프레임웍 ... 180
6.3 병렬로 처리할 만한 작업 ... 190
7장 중단 및 종료 ... 205
7.1 작업 중단 ... 206
7.2 스레드 기반 서비스 중단 ... 226
7.3 비정상적인 스레드 종료 상황 처리 ... 240
7.4 JVM 종료 ... 245
8장 스레드 풀 활용 ... 251
8.1 작업과 실행 정책 간의 보이지 않는 연결 관계 ... 251
8.2 스레드 풀 크기 조절 ... 255
8.3 ThreadPoolExecutor 설정 ... 257
8.4 ThreadPoolExecutor 상속 ... 268
8.5 재귀 함수 병렬화 ... 270
9장 GUI 애플리케이션 ... 283
9.1 GUI는 왜 단일 스레드로 동작하는가? ... 283
9.2 짧게 실행되는 GUI 작업 ... 288
9.3 장시간 실행되는 GUI 작업 ... 291
9.4 데이터 공유 모델 ... 298
9.5 다른 형태의 단일 스레드 서브시스템 ... 301
3부 활동성, 성능, 테스트 ... 303
10장 활동성을 최대로 높이기 ... 305
10.1 데드락 ... 305
10.2 데드락 방지 및 원인 추적 ... 319
10.3 그 밖의 활동성 문제점 ... 323
11장 성능, 확장성 ... 327
11.1 성능에 대해 ... 327
11.2 암달의 법칙 ... 333
11.3 스레드와 비용 ... 339
11.4 락 경쟁 줄이기 ... 343
11.5 예제: Map 객체의 성능 분석 ... 357
12장 병렬 프로그램 테스트 ... 363
12.1 정확성 테스트 ... 365
12.2 성능 테스트 ... 382
12.3 성능 측정의 함정 피하기 ... 390
12.4 보조적인 테스트 방법 ... 396
4부 고급 주제 ... 403
13장 명시적인 락 ... 405
13.1 Lock과 ReentrantLock ... 405
13.2 성능에 대한 고려 사항 ... 412
13.3 공정성 ... 413
13.4 synchronized 또는 ReentrantLock 선택 ... 416
13.5 읽기-쓰기 락 ... 417
14장 동기화 클래스 구현 ... 423
14.1 상태 종속성 관리 ... 423
14.2 조건 큐 활용 ... 433
14.3 명시적인 조건 객체 ... 444
14.4 동기화 클래스의 내부 구조 ... 447
14.5 AbstractQueuedSynchronizer ... 450
14.6 java.util.concurrent 패키지의 동기화 클래스에서 AQS 활용 모습 ... 455
15장 단일 연산 변수와 넌블로킹 동기화 ... 461
15.1 락의 단점 ... 462
15.2 병렬 연산을 위한 하드웨어적인 지원 ... 464
15.3 단일 연산 변수 클래스 ... 469
15.4 넌블로킹 알고리즘 ... 476
16장 자바 메모리 모델 ... 487
16.1 자바 메모리 모델은 무엇이며, 왜 사용해야 하는가? ... 487
16.2 안전한 공개 ... 497
16.3 초기화 안전성 ... 504
부록 A 병렬 프로그램을 위한 어노테이션 ... 507
A.1 클래스 어노테이션 ... 507
A.2 필드와 메소드 어노테이션 ... 508
참고자료 ... 509
용어 정리 ... 512
찾아보기 ... 515
더보기 닫기