HOME > 상세정보

상세정보

(Java 언어로 배우는)디자인 패턴 입문 : 멀티쓰레드 편 / 개정판 (32회 대출)

자료유형
단행본
개인저자
結城浩, 1963- 변연희, 역
서명 / 저자사항
(Java 언어로 배우는)디자인 패턴 입문 : 멀티쓰레드 편 / 結城 浩 저; 변연희 역.
판사항
개정판
발행사항
서울 :   영진닷컴,   2008.  
형태사항
566 p. : 삽도 ; 24 cm + CD-ROM 1매.
총서사항
바이블 = Bible series ; 07
원표제
Java言語で學ぶデザインパタ一ン入門 : マルチスレッド編. 增補改訂版.
기타표제
Java 언어로 배우는 멀티 쓰레드와 병행처리 패턴
ISBN
9788931436921
일반주기
부록수록  
서지주기
참고문헌: p. 563-566
000 01124namccc200337 k 4500
001 000045445446
005 20211222144649
007 ta
008 080507s2008 ulka b 000c kor
020 ▼a 9788931436921 ▼g 13000
035 ▼a (KERIS)BIB000011297016
040 ▼a 211044 ▼c 211044 ▼d 211009
041 1 ▼a kor ▼h jpn
082 0 4 ▼a 005.133 ▼2 22
090 ▼a 005.133 ▼b J41 2008z14
100 1 ▼a 結城浩, ▼d 1963- ▼0 AUTH(211009)100632
245 2 0 ▼a (Java 언어로 배우는)디자인 패턴 입문 : ▼b 멀티쓰레드 편 / ▼d 結城 浩 저; ▼e 변연희 역.
246 0 3 ▼a Java 언어로 배우는 멀티 쓰레드와 병행처리 패턴
246 1 9 ▼a Java言語で學ぶデザインパタ一ン入門 : マルチスレッド編. 增補改訂版.
250 ▼a 개정판
260 ▼a 서울 : ▼b 영진닷컴, ▼c 2008.
300 ▼a 566 p. : ▼b 삽도 ; ▼c 24 cm + ▼e CD-ROM 1매.
440 0 0 ▼a 바이블 = ▼x Bible series ; ▼v 07
500 ▼a 부록수록
504 ▼a 참고문헌: p. 563-566
700 1 ▼a 변연희, ▼e
740 ▼a (자바 언어로 배우는)디자인 패턴 입문
740 ▼a Java gengo de manabu design pattern nyumon multithread hen
900 1 1 ▼a Yuki, Hiroshi
945 ▼a KINS

No. 소장처 청구기호 등록번호 도서상태 반납예정일 예약 서비스
No. 1 소장처 중앙도서관/제2자료실(3층)/ 청구기호 005.133 J41 2008z14 등록번호 111477368 도서상태 대출가능 반납예정일 예약 서비스 B M
No. 2 소장처 과학도서관/Sci-Info(1층서고)/ 청구기호 005.133 J41 2008z14 등록번호 121171308 도서상태 대출가능 반납예정일 예약 서비스 B M
No. 소장처 청구기호 등록번호 도서상태 반납예정일 예약 서비스
No. 1 소장처 중앙도서관/제2자료실(3층)/ 청구기호 005.133 J41 2008z14 등록번호 111477368 도서상태 대출가능 반납예정일 예약 서비스 B M
No. 소장처 청구기호 등록번호 도서상태 반납예정일 예약 서비스
No. 1 소장처 과학도서관/Sci-Info(1층서고)/ 청구기호 005.133 J41 2008z14 등록번호 121171308 도서상태 대출가능 반납예정일 예약 서비스 B M

컨텐츠정보

책소개

Java 언어를 이용하여 멀티 쓰레드와 병행처리 패턴을 배우는 입문서. 이번 개정판에서는 Java SE 5.0에 대응하는 예제 프로그램을 추가하였으며, 초판에서 독자들이 보내준 디버그와 여러 가지 정보들을 추가하였다.

이 책에서는 디자인 패턴에 대해 주로 다루고 있지만 주요 포인트마다 Java 언어에 대해서도 설명하고 있다. 때문에 읽다 보면 Java 언어에 대한 이해도 함께 깊어지게 된다. Java 언어의 멀티 쓰레드에 대한 이해가 부족한 독자에게도 많은 도움이 될 것이다.

이 책은 Java 언어를 이용하여 멀티 쓰레드와 병행처리 패턴을 배우는 입문서입니다. 이번 개정판에서는 Java SE 5.0에 대응하는 예제 프로그램을 추가하였으며, 초판에서 독자 여러분들이 보내준 디버그와 여러 가지 정보들을 추가하였습니다. 이 책에서는 디자인 패턴에 대해 주로 다루고 있지만 주요 포인트마다 Java 언어에 대해서도 설명하고 있습니다. 때문에 읽다 보면 Java 언어에 대한 이해도 함께 깊어지게 됩니다. Java 언어의 멀티 쓰레드에 대한 이해가 아직 부족한 독자에게도 많은 도움이 될 것입니다.

* 주요 내용
멀티 쓰레드가 원활하게 사용되고 있는 프로그램에서는 복수 처리를 병행할 수 있습니다. GUI 애플리케이션에서 멀티 쓰레드를 제대로 사용하면 사용자에 대한 응답성을 향상시킬 수 있으며, 서버 상의 프로그램에서 멀티 쓰레드를 제대로 사용하면 복수 클라이언트의 요청을 병행 처리할 수 있습니다.
이 책에서는 멀티 쓰레드 프로그램에 자주 사용되는 패턴을 Java 언어로 작성한 구체적인 프로그램을 소개합니다. 쓰레드의 기초지식에서부터 쓰레드의 개시와 종료, 쓰레드 간의 배타제어와 협조동작, 효과적인 사용법, 쓰레드 수의 관리, 수행 능력 개선을 위한 힌트 등을 각 장에서 배우게 됩니다. 또한 자칫 범하기 쉬운 실수나 멀티 쓰레드 프로그램을 읽는 요령에 대해서도 공부합니다.

* 특징 또는 강점
1. 멀티 쓰레드 패턴 해설
이 책의 각 장에서는 멀티 쓰레드와 병행 처리에 관한 패턴을 설명합니다. 패턴의 내용을 소개하는 것에서 그치는 것이 아니라, 그 패턴과 관련된 Java 언어의 기능에 대해서도 소개하고 있기 때문에 Java 언어에 대한 이해도 함께 높아집니다.

2. Java 언어 예제 프로그램
이 책에서 다루는 모든 패턴에 대하여 Java 언어로 작성한 구체적인 예제 프로그램을 소개하고 있습니다. 막힘없이 읽어 갈 수 있도록 대부분의 예제 프로그램은 매우 짧게 구성했습니다. 그러면서도 예제 프로그램에는 생략된 부분이 없기 때문에 실제로 컴파일하여 실행해 볼 수 있습니다.

3. 패턴명에 대한 쉬운 해설
이 책에서는 패턴의 영어이름이 가지는 의미도 쉽게 설명하고 있어 초보자도 패턴을 쉽게 이해하고 외울 수 있습니다.

4. 연습 문제
각 장 마지막에는 연습문제가 나옵니다. 그 장에서 배운 내용을 더욱 발전시키고, 실제 개발할 때 패턴을 적용하려 한다면 꼭 연습문제를 풀어보기 바랍니다. 부록 CD에 연습문제의 해답도 싣고 있습니다.

5. java.util.concurrent 패키지 소개
Java SE 5.0부터 멀티 쓰레드 프로그램에 이용하기 편리한 java.util.concurrent 패키지가 표준 라이브러리에 추가됐습니다. 이 책의 각 장에서는 java.util.concurrent 패키지의 주요 클래스의 사용법을 예제 프로그램과 함께 설명하고 있습니다.

* 챕터별 요약

Chapter 01. Single Threaded Execution - 이 다리를 건널 수 있는 사람은 오직 한 명
멀티 쓰레드 프로그래밍의 가장 기본적인 패턴인 Single Threaded Execution 패턴을 공부합니다. 이는 어떠한 처리를 실행하는 쓰레드가 한 개뿐임을 보증하는 패턴입니다. 이 패턴을 이용함으로써 인스턴스가 부정합 상태가 되는 것을 방지할 수 있습니다. 또한 Java 언어 synchronized에 대해서도 심도 있게 공부하며, 계수 세마포어 java.util.concurrent.Semaphore의 예제 프로그램을 만들어 봅니다.

Chapter 02. Immutable - 망가뜨리고 싶어도 망가지지 않는다
일단 인스턴스가 생성된 다음에는 그 인스턴스의 내용이 절대 바뀌지 않는 Immutable 패턴에 대해 배웁니다. 이 패턴을 사용하면 인스턴스가 부정합 상태가 되거나 하지 않기 때문에 배타제어를 할 필요가 없어지고 수행 능력을 높일 수 있습니다. Java 언어 final의 의미에 대해서도 살펴봅니다. Collections. synchronizedList 및 java.util.concurrent.CopyOnWriteArrayList 예제 프로그램도 작성합니다.

Chapter 03. Guarded Suspension- 준비가 될 때까지 기다려 주세요
인스턴스가 기대하는 상황이 만들어지기 전까지는 쓰레드가 메소드를 실행하지 않도록 방지하는 Guarded Suspension 패턴에 대해서 공부합니다. 이 패턴도 인스턴스의 안전성을 보장하는데 쓰입니다. Java 언어의 wait 메소드와 notifyAll 메소드의 사용법을 연습하며, 블록하는 큐(Queue) java.util.concurrent.LinkedBlockingQueue 예제 프로그램도 만들어 봅니다.

Chapter 04. Balking - 필요 없으면 관둬요
인스턴스가 기대하는 상태가 만들어지지 않으면 메소드의 실행을 중단하는 Baking 패턴에 대해 배웁니다. 이 패턴으로 불필요한 기다림이나 과도한 메소드의 실행을 막을 수 있습니다.

Chapter 05. Producer-Consumer - 내가 만들고 당신이 사용한다
복수의 쓰레드가 협력하여 동작하는 Producer-Consumer 패턴에 대해서 배웁니다. 이 패턴을 사용하면 데이터를 만드는 쓰레드와 사용하는 쓰레드가 충돌없이 병행 동작합니다. 블록하는 큐(Queue) java.util.concurrent.ArrayBlockingQueue의 예제 프로그램도 만듭니다.

Chapter 06. Read-Write Lock - 다 같이 읽는 것은 상관없지만 읽는 중간에 쓰면 안돼요
유연한 배타 제어를 실행하는 Read-Write Lock 패턴에 대해서 배웁니다. 이 패턴을 이용하면 데이터를 쓰는 쓰레드는 하나밖에 동작할 수 없지만, 데이터를 읽는 쓰레드는 복수 동작이 가능해집니다. 이 패턴으로 전체적인 수행 능력을 향상시킬 수 있습니다. java.util.concurrent.locks.ReentrantReadWriteLock 예제 프로그램도 만듭니다.

Chapter 07. Thread-Per-Message - 이 일을 부탁해요
처리를 다른 쓰레드에 맡기는 Thread-Per-Message 패턴에 대해 배웁니다. 이 패턴을 사용하면 별도의 쓰레드에 작업을 맡기고, 사용자는 바로 다음 작업을 진행할 수 있습니다. 이 패턴으로 프로그램의 응답성을 향상시킬 수 있습니다. 또한 Java 언어 내부 클래스의 사용법을 공부합니다. java.util.concurrent 패키지의 Executor이나 ExecutorServeice의 예제 프로그램도 작성합니다.

Chapter 08. Worker Thread - 일이 올 때까지 기다리고, 일이 오면 작업한다
복수의 쓰레드를 대기시키고 처리해야 할 작업을 순서대로 실행하는 Worker Thread 패턴에 대해 배웁니다. 이 패턴을 사용하면 쓰레드 생성 코스트를 줄일 수 있습니다. 또한 대기하고 있는 쓰레드의 수를 조절하여 이용하는 리소스의 양을 제어할 수 있습니다. AWT나 Swing(JFC) 쓰레드의 사용법에 대해서도 배웁니다. 쓰레드 풀을 java.util.concurrent 패키지에서 사용하는 예제 프로그램도 만듭니다.

Chapter 09. Future - 먼저 교환권을 받으세요
다른 쓰레드에 맡겼던 작업의 결과를 동기적으로 받아들이는 Future 패턴에 대해 배웁니다. 이 패턴은 비동기적인 메소드 호출을 만들 때 도움이 됩니다. 또한 java.util.concurrent, Future, FutureTask, Callable의 예제 프로그램도 만듭니다.

Chapter 10. Two-Phase Termination - 뒷정리를 하고 나서 자도록 해요
쓰레드를 종료시키는 Two-Phase Termination 패턴에 대해 공부합니다. 이 패턴을 사용하면 적절하게 종료 처리를 하고 나서 쓰레드를 안전하게 마칠 수 있습니다. 쓰레드의 인터럽트에 대해서도 배웁니다. java.util.concurrent 패키지 CountDownLatch, CyclicBarrier의 예제 프로그램도 만듭니다.

Chapter 11. Thread-Specific Storage - 쓰레드마다 락커를 가진다
쓰레드별로 변수 영역을 확보하는 Thread-Specific Storage 패턴에 대해 배웁니다. 멀티 쓰레드라 하더라도 변수 영역이 완전히 분리되어 있기 때문에 배타제어의 필요성이 사라집니다. java.lang.ThreadLocal 클래스의 사용법도 배웁니다.

Chapter 12. Active Object - 비동기 메시지를 맞이하는 능동적인 객체
자율적으로 동작하는 객체를 만드는 Active Object 패턴에 대해 배웁니다. 이 객체는 외부의 메시지를 받아들이고 그것을 자신의 쓰레드를 이용해 실행합니다. 이 패턴을 사용하면 메소드의 호출과 실행이 분리됩니다. java.util.concurrent 패키지의 클래스를 사용한 예제 프로그램도 만듭니다.


정보제공 : Aladin

저자소개

유키 히로시(지은이)

프로그래밍과 암호, 수학 등에 관한 책을 다수 집필했다. 인터넷에 연재한 '수학 소녀', '수학 소녀의 비밀노트'는 수많은 네티즌에게 수학의 재미와 즐거움을 주었고, 책으로 출간되어 선풍적인 인기를 끌면서 대만, 태국, 미국 등에서도 출간되었다. 국내에 소개된 책으로는 《프로그래머, 수학으로 생각하라》 《수학걸》 《수학 홀릭 페르마의 마지막 정리》 《Java 언어로 배우는 디자인 패턴 입문》 《알기 쉬운 정보보호개론》 《Java 언어로 배우는 디자인 패턴 입문 - 멀티쓰레드 편》 《Java 언어로 배우는 리팩토링 입문》 등이 있다.

변연희(옮긴이)

<그림으로 설명하는 UML 사전>

정보제공 : Aladin

목차

목차
UML에 대해서
 UML = 27
 클래스 다이어그램 = 27
 클래스의 관계 = 32
 시퀀스 다이어그램 = 32
 타임 쓰레드 다이어그램 = 34
Introduction 01 Java 언어의 쓰레드
 Java 언어의 쓰레드 = 38
 쓰레드란 무엇인가 = 38
 쓰레드의 기동 = 47
 쓰레드의 일시 정지 = 52
 쓰레드의 배타제어 = 54
 쓰레드의 협조 = 62
 쓰레드의 상태 변화 = 69
 쓰레드와 관련한 그 밖의 이야기 = 71
 이 장에서 배운 것 = 71
 연습문제 = 72
Introduction 02 멀티 쓰레드 프로그램의 평가기준
 멀티 쓰레드 프로그램의 평가기준 = 78
 이 장에서 배운 것 = 81
 연습문제 = 82
Chapter 01 Single Threaded Execution - 이 다리를 건널 수 있는 사람은 오직 한 명
 Single Threaded Execution 패턴 = 84
 예제 프로그램 1 : Single Threaded Execution 패턴을 사용하지 않는 예 = 84
 예제 프로그램 2 : Single Threaded Execution 패턴을 사용한 예 = 92
 Single Threaded Execution 패턴의 등장인물 = 95
 생각의 폭을 넓히기 위한 힌트 = 96
 관련 패턴 = 100
 보강 1 : synchronized에 대해 생각해 봅시다 = 100
 보강 2 : java.util.concurrent 패키지와 계수 Semaphore = 108
 이 장에서 배운 것 = 111
 연습문제 = 112
Chapter 02 Immutable - 망가뜨리고 싶어도 망가지지 않는다
 Immutable 패턴 = 120
 예제 프로그램 = 120
 Immutable 패턴의 등장인물 = 125
 생각의 폭을 넓히기 위한 힌트 = 126
 관련 패턴 = 130
 보강 1 : final = 131
 보강 2 : 컬렉션 클래스와 멀티 쓰레드 = 134
 이 장에서 배운 것 = 141
 연습문제 = 142
Chapter 03 Guarded Suspension - 준비가 될 때까지 기다려 주세요
 Guarded Suspension 패턴 = 150
 예제 프로그램 = 150
 Guarded Suspension 패턴의 등장인물 = 161
 생각의 폭을 넓히기 위한 힌트 = 162
 관련 패턴 = 167
 이 장에서 배운 것 = 168
 연습문제 = 169
Chapter 04 Balking - 필요 없으면 관둬요
 Balking 패턴 = 176
 예제 프로그램 = 176
 Balking 패턴의 등장인물 = 183
 생각의 폭을 넓히기 위한 힌트 = 184
 관련 패턴 = 187
 보강 : 타임아웃 = 188
 이 장에서 배운 것 = 193
 연습문제 = 194
Chapter 05 Producer-Consumer - 내가 만들고 당신이 사용한다
 Producer-Consumer 패턴 = 200
 예제 프로그램 = 200
 Producer Consumer 패턴의 등장인물 = 209
 생각의 폭을 넓히기 위한 힌트 = 211
 관련 패턴 = 216
 보강 1 : 예외 InterruptedException = 217
 보강 2 : java.util.concurrent 패키지와 Producer-Consumer 패턴 = 222
 이 장에서 배운 것 = 231
 연습문제 = 232
Chapter 06 Read-Write Lock - 다 같이 읽는 것은 상관없지만 읽는 중간에 쓰면 안돼요
 Read-Write Lock 패턴 = 238
 예제 프로그램 = 239
 Read-Write Lock 패턴의 등장인물 = 251
 생각의 폭을 넓히기 위한 힌트 = 253
 관련 패턴 = 255
 보강 : java.util.concurrent.locks 패키지와 Read-Write Lock 패턴 = 256
 이 장에서 배운 것 = 259
 연습문제 = 260
Chapter 07 Thread-Per-Message - 이 일을 부탁해요
 Thread-Per-Message 패턴 = 270
 예제 프로그램 = 270
 Thread-Per-Message 패턴의 등장인물 = 276
 생각의 폭을 넓히기 위한 힌트 = 277
 관련 패턴 = 280
 보강 1 : 프로세스와 쓰레드 = 280
 보강 2 : java.util.concurrent 패키지와 Thread-Per-Message 패턴 = 282
 이 장에서 배운 것 = 294
 연습문제 = 294
Chapter 08 Worker Thread - 일이 올 때까지 기다리고, 일이 오면 작업한다
 Worker Thread 패턴 = 306
 예제 프로그램 = 306
 Worker Thread 패턴의 등장인물 = 314
 생각의 폭을 넓히기 위한 힌트 = 316
 관련 패턴 = 321
 보강 1 : Swing의 이벤트ㆍ디스패칭 쓰레드 = 323
 보강 2 java.util.concurrent 패키지와 Worker Thread 패턴 = 329
 이 장에서 배운 것 = 334
 연습문제 = 335
Chapter 09 Future - 먼저 교환권을 받으세요
 Future 패턴 = 340
 예제 프로그램 = 340
 Future 패턴의 등장인물 = 348
 생각의 폭을 넓히기 위한 힌트 = 350
 관련 패턴 = 354
 보강 : java.util.concurrent 패키지와 Future 패턴 = 355
 이 장에서 배운 것 = 360
 연습문제 = 360
Chapter 10 Two-Phase Termination - 뒷정리를 하고 나서 자도록 해요
 Two-phase Termination 패턴 = 368
 예제 프로그램 = 369
 Two-Phase Termination 패턴의 등장인물 = 375
 생각의 폭을 넓히기 위한 힌트 = 376
 관련 패턴 = 384
 보강 1 : 인터럽트 상태와 예외 InterruptedException의 상호 변환 = 385
 보강 2 : java.util.concurrent 패키지와 쓰레드의 동기 = 388
 이 장에서 배운 것 = 397
 연습문제 = 398
Chapter 11 Thread-Specific Storage - 쓰레드마다 락커를 가진다
 Thread-Specific Storage 패턴 = 410
 java.lang.ThradLocal 클래스에 대하여 = 410
 예제 프로그램1 : Thread-Specific Storage 패턴을 사용하지 않는 예 = 412
 예제 프로그램 2 : Thread-Specific Storage 패턴을 사용하는 예 = 415
 Thread-Specific Storage 패턴의 등장인물 = 422
 생각의 폭을 넓히는 힌트 = 425
 관련 패턴 = 429
 보강 : 액터 베이스와 태스크 베이스 = 431
 이 장에서 배운 것 = 433
 연습문제 = 435
Chapter 12 Active Object - 비동기 메시지를 맞이하는 능동적인 객체
 Active Object 패턴 = 440
 예제 프로그램 1 = 441
 Active Object 패턴의 등장인물 = 460
 생각의 폭을 넓히기 위한 힌트 = 463
 관련 패턴 = 472
 보강 : java.util.concurrent 패키지와 Active Object 패턴 = 472
 이 장에서 배운 것 = 483
 연습문제 = 484
Chapter 13 총정리 - 멀티 쓰레드 프로그래밍 패턴 랭귀지
 멀티 쓰레드 프로그래밍 패턴 랭귀지 = 492
 Single Thread Execution 패턴(Chapter 01) - 이 다리를 건널 수 있는 사람은 오직 한 명뿐 = 494
 Immutable 패턴(Chapter 02) - 망가뜨리고 싶어도 망가지지 않아 = 495
 Guarded Suspension 패턴(Chapter 03) - 준비가 될 때까지 기다려 주세요 = 496
 Balking 패턴(Chapter 04) - 필요 없으면 관둬요 = 497
 Producer-Consumer 패턴(Chapter 05) - 내가 만들고 당신이 사용한다 = 499
 Read-Write Lock 패턴(Chapter 06) - 다 같이 읽는 것은 상관없지만 읽는 중간에 쓰면 안 되요 = 500
 Thread-Per-Message 패턴(Chapter 07) - 이 일을 부탁해요 = 501
 Worker Thread 패턴(Chapter 08) - 일이 올 때까지 기다리고, 일이 오면 작업한다 = 502
 Future 패턴(Chapter 09) - 먼저 교환권을 받으세요 = 503
 Two-Phase Termination 패턴(Chapter 10) - 뒷정리를 하고 나서 자도록 해요 = 504
 Thread-Specific Storage 패턴(Chapter 11) - 쓰레드마다 락커를 가진다 = 506
 Active Object 패턴(Chapter 12) - 비동기 메시지를 맞이하는 능동적인 객체 = 507
 마지막으로 = 509
Appendix(부록)
 A : Java의 메모리 모델 = 512
 B : Java 쓰레드의 우선도 = 540
 C : 쓰레드 관련 주요 API = 542
 D : java.util.concurrent 패키지 = 551
 E : 예제 프로그램의 실행 순서 = 560
 F : 참고 문헌 = 563

관련분야 신착자료

Zumstein, Felix (2022)