全書共7章。第1章講解了Java多線程的基礎(chǔ),重點(diǎn)介紹線程類的核心API的使用。第2章講解對并發(fā)訪問的控制,即如何寫出線程安全的程序。第3章介紹線程間通信,以提高CPU利用率和系統(tǒng)間的交互,同時(shí)增強(qiáng)對線程任務(wù)的把控與監(jiān)督。第4章講解Lock對象,以更好實(shí)現(xiàn)并發(fā)訪問時(shí)的同步處理。第5章講解移動(dòng)開發(fā)中使用較多的定時(shí)器類的多線程技術(shù),這是計(jì)劃/任務(wù)執(zhí)行里很重要的技術(shù)點(diǎn)。第6章講解如何安全、正確地將單例模式與多線程技術(shù)相結(jié)合,避免實(shí)際應(yīng)用中可能會(huì)出現(xiàn)的麻煩。第7章將前面被遺漏的案例在本章節(jié)中進(jìn)行補(bǔ)充,盡量做到不出現(xiàn)技術(shù)空白點(diǎn)。
目 錄?Contents
前 言
第1章 Java多線程技能 1
1.1 進(jìn)程和多線程的概念及線程的優(yōu)點(diǎn) 1
1.2 使用多線程 3
1.2.1 繼承Thread類 4
1.2.2 實(shí)現(xiàn)Runnable接口 8
1.2.3 實(shí)例變量與線程安全 9
1.2.4 留意i與System.out.println()的異常 14
1.3 currentThread()方法 16
1.4 isAlive()方法 18
1.5 sleep()方法 20
1.6 getId()方法 22
1.7 停止線程 23
1.7.1 停止不了的線程 23
1.7.2 判斷線程是否是停止?fàn)顟B(tài) 24
1.7.3 能停止的線程——異常法 27
1.7.4 在沉睡中停止 30
1.7.5 能停止的線程——暴力停止 32
1.7.6 方法stop()與java.lang.ThreadDeath異常 33
1.7.7 釋放鎖的不良后果 34
1.7.8 使用return停止線程 35
1.8 暫停線程 36
1.8.1 suspend與resume方法的使用 36
1.8.2 suspend與resume方法的缺點(diǎn)——獨(dú)占 38
1.8.3 suspend與resume方法的缺點(diǎn)——不同步 40
1.9 yield方法 42
1.10 線程的優(yōu)先級 43
1.10.1 線程優(yōu)先級的繼承特性 43
1.10.2 優(yōu)先級具有規(guī)則性 44
1.10.3 優(yōu)先級具有隨機(jī)性 47
1.10.4 看誰運(yùn)行得快 49
1.11 守護(hù)線程 50
1.12 本章小結(jié) 51
第2章 對象及變量的并發(fā)訪問 52
2.1 synchronized同步方法 52
2.1.1 方法內(nèi)的變量為線程安全 53
2.1.2 實(shí)例變量非線程安全 54
2.1.3 多個(gè)對象多個(gè)鎖 57
2.1.4 synchronized方法與鎖對象 59
2.1.5 臟讀 63
2.1.6 synchronized鎖重入 65
2.1.7 出現(xiàn)異常,鎖自動(dòng)釋放 68
2.1.8 同步不具有繼承性 69
2.2 synchronized同步語句塊 71
2.2.1 synchronized方法的弊端 72
2.2.2 synchronized同步代碼塊的使用 74
2.2.3 用同步代碼塊解決同步方法的弊端 76
2.2.4 一半異步,一半同步 76
2.2.5 synchronized代碼塊間的同步性 78
2.2.6 驗(yàn)證同步synchronized(this)代碼塊是鎖定當(dāng)前對象的 80
2.2.7 將任意對象作為對象監(jiān)視器 82
2.2.8 細(xì)化驗(yàn)證3個(gè)結(jié)論 91
2.2.9 靜態(tài)同步synchronized方法與synchronized(class)代碼塊 96
2.2.10 數(shù)據(jù)類型String的常量池特性 102
2.2.11 同步synchronized方法無限等待與解決 105
2.2.12 多線程的死鎖 107
2.2.13 內(nèi)置類與靜態(tài)內(nèi)置類 109
2.2.14 內(nèi)置類與同步:實(shí)驗(yàn)1 111
2.2.15 內(nèi)置類與同步:實(shí)驗(yàn)2 113
2.2.16 鎖對象的改變 114
2.3 volatile關(guān)鍵字 118
2.3.1 關(guān)鍵字volatile與死循環(huán) 118
2.3.2 解決同步死循環(huán) 119
2.3.3 解決異步死循環(huán) 120
2.3.4 volatile非原子的特性 124
2.3.5 使用原子類進(jìn)行i++操作 126
2.3.6 原子類也并不安全 127
2.3.7 synchronized代碼塊有volatile同步的功能 130
2.4 本章總結(jié) 132
第3章 線程間通信 133
3.1 等待/通知機(jī)制 133
3.1.1 不使用等待/通知機(jī)制實(shí)現(xiàn)線程間通信 133
3.1.2 什么是等待/通知機(jī)制 135
3.1.3 等待/通知機(jī)制的實(shí)現(xiàn) 136
3.1.4 方法wait()鎖釋放與notify()鎖不釋放 143
3.1.5 當(dāng)interrupt方法遇到wait方法 146
3.1.6 只通知一個(gè)線程 148
3.1.7 喚醒所有線程 150
3.1.8 方法wait(long)的使用 150
3.1.9 通知過早 152
3.1.10 等待wait的條件發(fā)生變化 155
3.1.11 生產(chǎn)者/消費(fèi)者模式實(shí)現(xiàn) 158
3.1.12 通過管道進(jìn)行線程間通信:字節(jié)流 171
3.1.13 通過管道進(jìn)行線程間通信:字符流 174
3.1.14 實(shí)戰(zhàn):等待/通知之交叉?zhèn)浞?177
3.2 方法join的使用 179
3.2.1 學(xué)習(xí)方法join前的鋪墊 179
3.2.2 用join()方法來解決 180
3.2.3 方法join與異常 181
3.2.4 方法join(long)的使用 183
3.2.5 方法join(long)與sleep(long)的區(qū)別 184
3.2.6 方法join()后面的代碼提前運(yùn)行:出現(xiàn)意外 187
3.2.7 方法join()后面的代碼提前運(yùn)行:解釋意外 189
3.3 類ThreadLocal的使用 191
3.3.1 方法get()與null 191
3.3.2 驗(yàn)證線程變量的隔離性 192
3.3.3 解決get()返回null問題 195
3.3.4 再次驗(yàn)證線程變量的隔離性 195
3.4 類InheritableThreadLocal的使用 197
3.4.1 值繼承 197
3.4.2 值繼承再修改 198
3.5 本章總結(jié) 199
第4章 Lock的使用 200
4.1 使用ReentrantLock類 200
4.1.1 使用ReentrantLock實(shí)現(xiàn)同步:測試1 200
4.1.2 使用ReentrantLock實(shí)現(xiàn)同步:測試2 202
4.1.3 使用Condition實(shí)現(xiàn)等待/通知錯(cuò)誤用法與解決 204
4.1.4 正確使用Condition實(shí)現(xiàn)等待/通知 207
4.1.5 使用多個(gè)Condition實(shí)現(xiàn)通知部分線程:錯(cuò)誤用法 208
4.1.6 使用多個(gè)Condition實(shí)現(xiàn)通知部分線程:正確用法 210
4.1.7 實(shí)現(xiàn)生產(chǎn)者/消費(fèi)者模式:一對一交替打印 213
4.1.8 實(shí)現(xiàn)生產(chǎn)者/消費(fèi)者模式:多對多交替打印 214
4.1.9 公平鎖與非公平鎖 216
4.1.10 方法getHoldCount()、getQueueLength()和getWaitQueueLength()的測試 219
4.1.11 方法hasQueuedThread()、hasQueuedThreads()和hasWaiters()的測試 222
4.1.12 方法isFair()、isHeldByCurrentThread()和isLocked()的測試 224
4.1.13 方法lockInterruptibly()、tryLock()和tryLock(long timeout,TimeUnit unit)的測試 226
4.1.14 方法awaitUninterruptibly()的使用 230
4.1.15 方法awaitUntil()的使用 232
4.1.16 使用Condition實(shí)現(xiàn)順序執(zhí)行 234
4.2 使用ReentrantReadWriteLock類 236
4.2.1 類ReentrantReadWriteLock的使用:讀讀共享 236
4.2.2 類ReentrantReadWriteLock的使用:寫寫互斥 237
4.2.3 類ReentrantReadWriteLock的使用:讀寫互斥 238
4.2.4 類ReentrantReadWriteLock的使用:寫讀互斥 239
4.3 本章總結(jié) 240
第5章 定時(shí)器Timer 241
5.1 定時(shí)器Timer的使用 241
5.1.1 方法schedule(TimerTask task, Date time)的測試 241
5.1.2 方法schedule(TimerTask task, Date firstTime, long period)的測試 247
5.1.3 方法schedule(TimerTask task, long delay)的測試 252
5.1.4 方法schedule(TimerTask task, long delay, long period)的測試 253
5.1.5 方法scheduleAtFixedRate(TimerTask task, Date firstTime, long period)的測試 254
5.2 本章總結(jié) 261
第6章 單例模式與多線程 262
6.1 立即加載/"餓漢模式" 262
6.2 延遲加載/"懶漢模式" 263
6.3 使用靜態(tài)內(nèi)置類實(shí)現(xiàn)單例模式 271
6.4 序列化與反序列化的單例模式實(shí)現(xiàn) 272
6.5 使用static代碼塊實(shí)現(xiàn)單例模式 274
6.6 使用enum枚舉數(shù)據(jù)類型實(shí)現(xiàn)單例模式 275
6.7 完善使用enum枚舉實(shí)現(xiàn)單例模式 277
6.8 本章總結(jié) 278
第7章 拾遺增補(bǔ) 279
7.1 線程的狀態(tài) 279
7.1.1 驗(yàn)證NEW、RUNNABLE和TERMINATED 280
7.1.2 驗(yàn)證TIMED_WAITING 281
7.1.3 驗(yàn)證BLOCKED 282
7.1.4 驗(yàn)證WAITING 284
7.2 線程組 285
7.2.1 線程對象關(guān)聯(lián)線程組:1級關(guān)聯(lián) 285
7.2.2 線程對象關(guān)聯(lián)線程組:多級關(guān)聯(lián) 287
7.2.3 線程組自動(dòng)歸屬特性 288
7.2.4 獲取根線程組 288
7.2.5 線程組里加線程組 289
7.2.6 組內(nèi)的線程批量停止 290
7.2.7 遞歸與非遞歸取得組內(nèi)對象 290
7.3 使線程具有有序性 291
7.4 SimpleDateFormat非線程安全 293
7.4.1 出現(xiàn)異常 293
7.4.2 解決異常方法1 294
7.4.3 解決異常方法2 295
7.5 線程中出現(xiàn)異常的處理 297
7.6 線程組內(nèi)處理異常 299
7.7 線程異常處理的傳遞 301
7.8 本章總結(jié) 306
還沒有看,先評論
整體還不錯(cuò)。。。實(shí)用性強(qiáng)。。專業(yè)性強(qiáng)
就是書殼被折壞了,略不爽。
紙質(zhì)泛黃 不像是華章正版
不知道是物流差還是商品差,總共在當(dāng)當(dāng)買了3本書,2本是變形的
速度快,包裝好,朋友很滿意
物流真是醉了。還能顯示聯(lián)系不到,再讓我聯(lián)系配送員,結(jié)果根據(jù)你們物流信息上顯示的配送員電話打過去說是打錯(cuò)了,厲害
通過編碼的形式讓我們理解,非常好!
感覺書一般 基礎(chǔ)理論氣息較重
書不錯(cuò),先看看再說
好書,值得購買
工作需要挺好
多線程編程好專業(yè)
還沒看完,感覺不錯(cuò)
不錯(cuò)啊不錯(cuò)不錯(cuò)不錯(cuò)啊不錯(cuò)不錯(cuò)不錯(cuò)啊不錯(cuò)不錯(cuò)
真的很好很不錯(cuò)
書還沒仔細(xì)看,印刷質(zhì)量不錯(cuò)。
正在看,內(nèi)容豐富,快遞非常快,我很滿意!
挺不錯(cuò)的的
垃@圾 毫無閱讀價(jià)值 簡直就是think in java 的讀書感 在總結(jié)成自己的 沒有項(xiàng)目實(shí)例或者一些經(jīng)驗(yàn)的東西 垃@圾! 垃@圾! 真@垃@圾!
看了工資理發(fā)咖累了吖顧客阿老阿姨的時(shí)候了我是誰的群主呢么事了的啊?
好書,內(nèi)容豐富,值得看一看,幫助還是蠻大的,當(dāng)當(dāng)送貨還是很及時(shí)
看了一點(diǎn),感覺內(nèi)容一般,很多想看的東西都沒有,全都是例子看著比較煩。
國內(nèi)為數(shù)不多的關(guān)于Java多線程開發(fā)的圖書,內(nèi)容寫得很一般,適合一點(diǎn)不懂多線程開發(fā)的初學(xué)者看看。性價(jià)比不高,簡單入門級的。
不錯(cuò),理論和實(shí)踐結(jié)合,java代碼寫的挺詳細(xì)的,避免了空洞
非常不錯(cuò)的一本書,工作中有很多可以借鑒的地方,值得一讀!
內(nèi)容還沒看 書感覺還不錯(cuò) 就是感覺有點(diǎn)薄了 我以為會(huì)很厚呢
送貨速度還可以,書的語言有點(diǎn)簡單,包裝簡單,不過書沒有損傷。
昨天下午買的,今天下午就到了,快的很,從鄭州發(fā)到西安太快了!爽爽爽!
沒什么大用,寫一些基本用不上的東西,因?yàn)楹芏嗳瞬恢溃钥雌饋砗芑H?
這本書幫助我提升自己多線程的設(shè)計(jì)方面有很大的幫助
第一頁就寫百度百科對進(jìn)程的解釋,立馬覺得買虧了,翻回去一看,國內(nèi)作者的書。。。買的時(shí)候沒認(rèn)真看作者名字,被書的封面坑了