会员   密码 您忘记密码了吗?
1,653,057 本书已上架      购物流程 | 常见问题 | 联系我们 | 关于我们 | 用户协议

有店 App


当前分类

商品分类

浏览历史

当前位置: 首页 > 简体书 > 圖解Java多線程設計模式
圖解Java多線程設計模式
上一张
下一张
prev next

圖解Java多線程設計模式

作者: (日)結城浩
出版社: 人民郵電出版社
出版日期: 2017-08-01
商品库存: 点击查询库存
以上库存为海外库存属流动性。
可选择“空运”或“海运”配送,空运费每件商品是RM14。
配送时间:空运约8~12个工作天,海运约30个工作天。
(以上预计配送时间不包括出版社库存不足需调货及尚未出版的新品)
定价:   NT534.00
市场价格: RM96.00
本店售价: RM85.44
购买数量:
collect Add to cart Add booking
详细介绍 商品属性 商品标记
內容簡介

本書通過具體的Java 程序,以淺顯易懂的語言逐一說明了多線程和並發處理中常用的12 種設計模式。內容涉及線程的基礎知識、線程的啟動與終止、線程間的互斥處理與協作、線程的有效應用、線程的數量管理以及性能優化的注意事項等。此外,還介紹了一些多線程編程時容易出現的失誤,以及多線程程序的閱讀技巧等。

在講解過程中,不僅以圖配文,理論結合實例,而且提供了運用模式解決具體問題的練習題和答案,幫助讀者加深對多線程和並發處理的理解,並掌握其使用技巧。本書通過具體的Java 程序,以淺顯易懂的語言逐一說明了多線程和並發處理中常用的12 種設計模式。內容涉及線程的基礎知識、線程的啟動與終止、線程間的互斥處理與協作、線程的有效應用、線程的數量管理以及性能優化的注意事項等。此外,還介紹了一些多線程編程時容易出現的失誤,以及多線程程序的閱讀技巧等。在講解過程中,不僅以圖配文,理論結合實例,而且提供了運用模式解決具體問題的練習題和答案,幫助讀者加深對多線程和並發處理的理解,並掌握其使用技巧。

結城浩,生於1963年,日本資-深技術作家和程序員。在編程語言、設計模式、數學、加密技術等領域,編寫了很多深受歡迎的入門書。代表作有《數學女孩》系列、《程序員的數學》、《圖解密碼技術》等。


目錄

序章1 Java線程 1
I1.1 Java線程 2
I1.2 何謂線程 2
明為跟蹤處理流程,實為跟蹤線程 2
單線程程序 3
多線程程序 4
Thread類的run方法和start方法 5
I1.3 線程的啟動 9
線程的啟動(1)——利用Thread類的子類 9
線程的啟動(2)——利用Runnable接口 10
I1.4 線程的暫停 12
I1.5 線程的互斥處理 13
synchronized方法 14
synchronized代碼塊 17
I1.6 線程的協作 18
等待隊列——線程休息室 19
wait方法——將線程放入等待隊列 19
notify方法——從等待隊列中取出線程 21
notifyAll方法——從等待隊列中取出所有線程 23
wait、notify、notifyAll是Object類的方法 24
I1.7 線程的狀態遷移 24
I1.8 線程相關的其他話題 26
I1.9 本章所學知識 26
I1.10 練習題 26
序章2 多線程程序的評價標准 31
I2.1 多線程程序的評價標准 32
安全性——不損壞對象 32
生存性——必要的處理能夠被執行 32
可復用性——類可重復利用 33
性能——能快速、大批量地執行處理 33
評價標准總結 33
I2.2 本章所學知識 34
I2.3 練習題 34

第1章 Single Threaded Execution模式——能通過這座橋的只有一個人 35
1.1 Single Threaded Execution模式 36
1.2 示例程序1:不使用Single Threaded Execution模式的程序 36
Main類 37
非線程安全的Gate類 37
UserThread類 38
執行起來看看……出錯了 39
為什麼會出錯呢 40
1.3 示例程序2:使用Single Threaded Execution模式的程序 41
線程安全的Gate類 41
synchronized的作用 42
1.4 Single Threaded Execution模式中的登場角色 43
1.5 拓展思路的要點 44
何時使用(可使用Single Threaded Execution模式的情況) 44
生存性與死鎖 45
可復用性和繼承反常 46
臨界區的大小和性能 46
1.6 相關的設計模式 47
Guarded Suspension模式 47
Read—Write Lock模式 47
Immutable模式 47
Thread—Specific Storage模式 48
1.7 延伸閱讀1:關於synchronized 48
synchronized語法與Before/After模式 48
synchronized在保護着什麼 49
該以什麼單位來保護呢 50
使用哪個鎖保護 50
原子操作 51
long與double的操作不是原子的 51
1.8 延伸閱讀2:java.util.concurrent包和計數信號量 52
計數信號量和Semaphore類 52
使用Semaphore類的示例程序 52
1.9 本章所學知識 55
1.10 練習題 55

第2章 Immutable模式——想破壞也破壞不了 61
2.1 Immutable模式 62
2.2 示例程序 62
使用Immutable模式的Person類 62
Main類 63
PrintPersonThread類 63
2.3 Immutable模式中的登場角色 65
2.4 拓展思路的要點 66
何時使用(可使用Immutable模式的情況) 66
考慮成對的mutable類和immutable類(性能) 66
為了確保不可變性(可復用性) 67
標准類庫中用到的Immutable模式 67
2.5 相關的設計模式 69
Single Threaded Execution模式 69
Read—Write Lock模式 69
Flyweight模式 69
2.6 延伸閱讀1:final 69
final的含義 69
2.7 延伸閱讀2:集合類與多線程 71
示例1:非線程安全的java.util.ArrayList類 71
示例2:利用Collections.synchronizedList方法所進行的同步 74
示例3:使用copy—on—write的java.util.concurrent.CopyOnWriteArrayList類 75
2.8 本章所學知識 76
2.9 練習題 77

第3章 Guarded Suspension模式——等我准備好哦 81
3.1 Guarded Suspension模式 82
3.2 示例程序 82
Request類 83
RequestQueue類 84
ClientThread類 85
ServerThread類 85
Main類 86
java.util.Queue與java.util.LinkedList的操作 87
getRequest詳解 87
putRequest詳解 89
synchronized的含義 89
wait與鎖 89
3.3 Guarded Suspension模式中的登場角色 90
3.4 拓展思路的要點 91
附加條件的synchronized 91
多線程版本的if 91
忘記改變狀態與生存性 91
wait與notify/notifyAll的責任(可復用性) 91
各種稱呼 91
使用java.util.concurrent.LinkedBlockingQueue的示例程序 93
3.5 相關的設計模式 94
Single Threaded Execution模式 94
Balking模式 94
Producer—Consumer模式 94
Future模式 94
3.6 本章所學知識 95
3.7 練習題 95

第4章 Balking模式——不需要就算了 99
4.1 Balking模式 100
4.2 示例程序 100
Data類 100
SaverThread類 102
ChangerThread類 102
Main類 103
4.3 Balking模式中的登場角色 105
4.4 拓展思路的要點 106
何時使用(可使用Balking模式的情況) 106
balk結果的表示方式 107
4.5 相關的設計模式 107
Guarded Suspension模式 107
Observer模式 107
4.6 延伸閱讀:超時 108
Balking模式和Guarded Suspension模式之間 108
wait何時終止呢 108
guarded timed的實現(使用wait) 109
synchronized中沒有超時,也不能中斷 110
java.util.concurrent中的超時 111
4.7 本章所學知識 111
4.8 練習題 112

第5章 Producer—Consumer模式——我來做,你來用 115
5.1 Producer—Consumer模式 116
5.2 示例程序 116
Main類 116
MakerThread類 117
EaterThread類 118
Table類 118
解讀put方法 120
解讀take方法 121
5.3 Producer—Consumer模式中的登場角色 122
5.4 拓展思路的要點 123
守護安全性的Channel角色(可復用性) 123
不可以直接傳遞嗎 124
Channel角色的剩余空間所導致的問題 124
以什麼順序傳遞Data角色呢 125
「存在中間角色」的意義 125
Consumer角色只有一個時會怎麼樣呢 126
5.5 相關的設計模式 126
Mediator模式 126
Worker Thread模式 126
Command模式 126
Strategy模式 127
5.6 延伸閱讀1:理解InterruptedException異常 127
可能會花費時間,但可以取消 127
加了throwsInterruptedException的方法 127
sleep方法和interrupt方法 128
wait方法和interrupt方法 128
join方法和interrupt方法 129
interrupt方法只是改變中斷狀態 129
isInterrupted方法——檢查中斷狀態 130
Thread.interrupted方法——檢查並清除中斷狀態 130
不可以使用Thread類的stop方法 130
5.7 延伸閱讀2:java.util.concurrent包和Producer—Consumer模式 131
java.util.concurrent包中的隊列 131
使用java.util.concurrent.ArrayBlockingQueue的示例程序 132
使用java.util.concurrent.Exchanger類交換緩沖區 133
5.8 本章所學知識 136
5.9 練習題 137
……
第6章 Read—Write Lock模式——大家一起讀沒問題,但讀的時候不要寫哦 141
第7章 Thread—Per—Message模式——這項工作就交給你了 163
第8章 Worker Thread模式——工作沒來就一直等,工作來了就干活 187
第9章 Future模式——先給您提貨單 211
第10章 Two—Phase Termination模式——先收拾房間再睡覺 231
第11章 Thread—Specific Storage模式——一個線程一個儲物櫃 263
第12章 Active Object模式——接收異步消息的主動對象 283
第13章 總結——多線程編程的模式語言 321
附錄