本書深入淺出地介紹了Java線程和并發(fā),是一本的Java并發(fā)參考手冊(cè)。書中從并發(fā)性和線程安全性的基本概念出發(fā),介紹了如何使用類庫(kù)提供的基本并發(fā)構(gòu)建塊,用于避免并發(fā)危險(xiǎn)、構(gòu)造線程安全的類及驗(yàn)證線程安全的規(guī)則,如何將小的線程安全類組合成更大的線程安全類,如何利用線程來(lái)提高并發(fā)應(yīng)用程序的吞吐量,如何識(shí)別可并行執(zhí)行的任務(wù),如何提高單線程子系統(tǒng)的響應(yīng)性,如何確保并發(fā)程序執(zhí)行預(yù)期任務(wù),如何提高并發(fā)代碼的性能和可伸縮性等內(nèi)容,介紹了一些高級(jí)主題,如顯式鎖、原子變量、非阻塞算法以及如何開發(fā)自定義的同步工具類。
本書適合Java程序開發(fā)人員閱讀。
第16屆Jolt大獎(jiǎng)提名圖書
JavaOne大會(huì)暢銷圖書
了解Java并發(fā)編程必讀佳作
本書作者都是Java Community Process JSR 166專家組(并發(fā)工具)的主要成員,并在其他很多JCP專家組里任職。Brian Goetz有20多年的軟件咨詢行業(yè)經(jīng)驗(yàn),并著有至少75篇關(guān)于Java開發(fā)的文章。Tim Peierls是"現(xiàn)代多處理器"的典范,他在BoxPop.biz、唱片藝術(shù)和戲劇表演方面也頗有研究。Joseph Bowbeer是一個(gè)Java ME專家,他對(duì)并發(fā)編程的興趣始于Apollo計(jì)算機(jī)時(shí)代。David Holmes是《The Java Programming Language》一書的合著者,任職于Sun公司。Joshua Bloch是Google公司的首席Java架構(gòu)師,《Effective Java》一書的作者,并參與著作了《Java Puzzlers》。Doug Lea是《Concurrent Programming》一書的作者,紐約州立大學(xué) Oswego分校的計(jì)算機(jī)科學(xué)教授。
對(duì)本書的贊譽(yù)
譯者序
前 言
第1章 簡(jiǎn)介
1.1 并發(fā)簡(jiǎn)史
1.2 線程的優(yōu)勢(shì)
1.2.1 發(fā)揮多處理器的強(qiáng)大能力
1.2.2 建模的簡(jiǎn)單性
1.2.3 異步事件的簡(jiǎn)化處理
1.2.4 響應(yīng)更靈敏的用戶界面
1.3 線程帶來(lái)的風(fēng)險(xiǎn)
1.3.1 安全性問題
1.3.2 活躍性問題
1.3.3 性能問題
1.4 線程無(wú)處不在
及時(shí)部分 基礎(chǔ)知識(shí)
第2章 線程安全性
2.1 什么是線程安全性
2.2 原子性
2.2.1 競(jìng)態(tài)條件
2.2.2 示例:延遲初始化中的競(jìng)態(tài)條件
2.2.3 復(fù)合操作
2.3 加鎖機(jī)制
2.3.1 內(nèi)置鎖
2.3.2 重入
2.4 用鎖來(lái)保護(hù)狀態(tài)
2.5 活躍性與性能
第3章 對(duì)象的共享
3.1 可見性
3.1.1 失效數(shù)據(jù)
3.1.2 非原子的64位操作
3.1.3 加鎖與可見性
3.1.4 Volatile變量
3.2 與逸出
3.3 線程封閉
3.3.1 Ad-hoc線程封閉
3.3.2 棧封閉
3.3.3 ThreadLocal類
3.4 不變性
3.4.1 Final域
3.4.2 示例:使用Volatile類型來(lái)不可變對(duì)象
3.5 安全
3.5.1 不正確的:正確的對(duì)象被破壞
3.5.2 不可變對(duì)象與初始化安全性
3.5.3 安全的常用模式
3.5.4 事實(shí)不可變對(duì)象
3.5.5 可變對(duì)象
3.5.6 安全地共享對(duì)象
第4章 對(duì)象的組合
4.1 設(shè)計(jì)線程安全的類
4.1.1 收集同步需求
4.1.2 依賴狀態(tài)的操作
4.1.3 狀態(tài)的所有權(quán)
4.2 實(shí)例封閉
4.2.1 Java監(jiān)視器模式
4.2.2 示例:車輛追蹤
4.3 線程安全性的委托
4.3.1 示例:基于委托的車輛追蹤器
4.3.2 獨(dú)立的狀態(tài)變量
4.3.3 當(dāng)委托失效時(shí)
4.3.4 底層的狀態(tài)變量
4.3.5 示例:狀態(tài)的車輛追蹤器
4.4 在現(xiàn)有的線程安全類中添加功能
4.4.1 客戶端加鎖機(jī)制
4.4.2 組合
4.5 將同步策略文檔化
第5章 基礎(chǔ)構(gòu)建模塊
5.1 同步容器類
5.1.1 同步容器類的問題
5.1.2 迭代器與Concurrent-ModificationException
5.1.3 隱藏迭代器
5.2 并發(fā)容器
5.2.1 ConcurrentHashMap
5.2.2 額外的原子Map操作
5.2.3 CopyOnWriteArrayList
5.3 阻塞隊(duì)列和生產(chǎn)者-消費(fèi)者模式
5.3.1 示例:桌面搜索
5.3.2 串行線程封閉
5.3.3 雙端隊(duì)列與工作密取
5.4 阻塞方法與中斷方法
5.5 同步工具類
5.5.1 閉鎖
5.5.2 FutureTask
5.5.3 信號(hào)量
5.5.4 柵欄
5.6 構(gòu)建高效且可伸縮的結(jié)果緩存
第二部分 結(jié)構(gòu)化并發(fā)應(yīng)用程序
第6章 任務(wù)執(zhí)行
6.1 在線程中執(zhí)行任務(wù)
6.1.1 串行地執(zhí)行任務(wù)
6.1.2 顯式地為任務(wù)創(chuàng)建線程
6.1.3 無(wú)限制創(chuàng)建線程的不足
6.2 Executor框架
6.2.1 示例:基于Executor的Web服務(wù)器
6.2.2 執(zhí)行策略
6.2.3 線程池
6.2.4 Executor的生命周期
6.2.5 延遲任務(wù)與周期任務(wù)
6.3 找出可利用的并行性
6.3.1 示例:串行的頁(yè)面渲染器
6.3.2 攜帶結(jié)果的任務(wù)Callable與Future
6.3.3 示例:使用Future實(shí)現(xiàn)頁(yè)面渲染器
6.3.4 在異構(gòu)任務(wù)并行化中存在的局限
6.3.5 CompletionService:Executor與BlockingQueue
6.3.6 示例:使用CompletionService實(shí)現(xiàn)頁(yè)面渲染器
6.3.7 為任務(wù)設(shè)置時(shí)限
6.3.8 示例:旅行預(yù)定門戶網(wǎng)站
第7章 取消與關(guān)閉
7.1 任務(wù)取消
7.1.1 中斷
7.1.2 中斷策略
7.1.3 響應(yīng)中斷
7.1.4 示例:計(jì)時(shí)運(yùn)行
7.1.5 通過(guò)Future來(lái)實(shí)現(xiàn)取消
7.1.6 處理不可中斷的阻塞
7.1.7 采用newTaskFor來(lái)封裝非標(biāo)準(zhǔn)的取消
7.2 停止基于線程的服務(wù)
7.2.1 示例:日志服務(wù)
7.2.2 關(guān)閉ExecutorService
7.2.3 "毒丸"對(duì)象
7.2.4 示例:只執(zhí)行一次的服務(wù)
7.2.5 shutdownNow的局限性
7.3 處理非正常的線程終止
7.4 JVM關(guān)閉
7.4.1 關(guān)閉鉤子
7.4.2 守護(hù)線程
7.4.3 終結(jié)器
第8章 線程池的使用
8.1 在任務(wù)與執(zhí)行策略之間的隱性耦合
8.1.1 線程饑餓死鎖
8.1.2 運(yùn)行時(shí)間較長(zhǎng)的任務(wù)
8.2 設(shè)置線程池的大小
8.3 配置ThreadPoolExecutor
8.3.1 線程的創(chuàng)建與銷毀
8.3.2 管理隊(duì)列任務(wù)
8.3.3 飽和策略
8.3.4 線程工廠
8.3.5 在調(diào)用構(gòu)造函數(shù)后再定制ThreadPoolExecutor
8.4 擴(kuò)展 ThreadPoolExecutor
8.5 遞歸算法的并行化
第9章 圖形用戶界面應(yīng)用程序
9.1 為什么GUI是單線程的
9.1.1 串行事件處理
9.1.2 Swing中的線程封閉機(jī)制
9.2 短時(shí)間的GUI任務(wù)
9.3 長(zhǎng)時(shí)間的GUI任務(wù)
9.3.1 取消
9.3.2 進(jìn)度標(biāo)識(shí)和完成標(biāo)識(shí)
9.3.3 SwingWorker
9.4 共享數(shù)據(jù)模型
9.4.1 線程安全的數(shù)據(jù)模型
9.4.2 分解數(shù)據(jù)模型
9.5 其他形式的單線程子系統(tǒng)
第三部分 活躍性、性能與測(cè)試
第10章 避免活躍性危險(xiǎn)
10.1 死鎖
10.1.1 鎖順序死鎖
10.1.2 動(dòng)態(tài)的鎖順序死鎖
10.1.3 在協(xié)作對(duì)象之間發(fā)生的死鎖
10.1.4 開放調(diào)用
10.1.5 資源死鎖
10.2 死鎖的避免與診斷
10.2.1 支持定時(shí)的鎖
10.2.2 通過(guò)線程轉(zhuǎn)儲(chǔ)信息來(lái)分析死鎖
10.3 其他活躍性危險(xiǎn)
10.3.1 饑餓
10.3.2 糟糕的響應(yīng)性
10.3.3 活鎖
第11章 性能與可伸縮性
11.1 對(duì)性能的思考
11.1.1 性能與可伸縮性
11.1.2 評(píng)估各種性能權(quán)衡因素
11.2 Amdahl定律
11.2.1 示例:在各種框架中隱藏的串行部分
11.2.2 Amdahl定律的應(yīng)用
11.3 線程引入的開銷
11.3.1 上下文切換
11.3.2 內(nèi)存同步
11.3.3 阻塞
11.4 減少鎖的競(jìng)爭(zhēng)
11.4.1 縮小鎖的范圍("快進(jìn)快出")
11.4.2 減小鎖的粒度
11.4.3 鎖分段
11.4.4 避免熱點(diǎn)域
11.4.5 一些替代獨(dú)占鎖的方法
11.4.6 監(jiān)測(cè)CPU的利用率
11.4.7 向?qū)ο蟪卣f(shuō)"不"
11.5 示例:比較Map的性能
11.6 減少上下文切換的開銷
第12章 并發(fā)程序的測(cè)試
12.1 正確性測(cè)試
12.1.1 基本的單元測(cè)試
12.1.2 對(duì)阻塞操作的測(cè)試
12.1.3 安全性測(cè)試
12.1.4 資源管理的測(cè)試
12.1.5 使用回調(diào)
12.1.6 產(chǎn)生更多的交替操作
12.2 性能測(cè)試
12.2.1 在PutTakeTest中增加計(jì)時(shí)功能
12.2.2 多種算法的比較
12.2.3 響應(yīng)性衡量
12.3 避免性能測(cè)試的陷阱
12.3.1 垃圾回收
12.3.2 動(dòng)態(tài)編譯
12.3.3 對(duì)代碼路徑的不真實(shí)采樣
12.3.4 不真實(shí)的競(jìng)爭(zhēng)程度
12.3.5 無(wú)用代碼的消除
12.4 其他的測(cè)試方法
12.4.1 代碼審查
12.4.2 靜態(tài)分析工具
12.4.3 面向方面的測(cè)試技術(shù)
12.4.4 分析與監(jiān)測(cè)工具
第四部分 高級(jí)主題
第13章 顯式鎖
13.1 Lock與 ReentrantLock
13.1.1 輪詢鎖與定時(shí)鎖
13.1.2 可中斷的鎖獲取操作
13.1.3 非塊結(jié)構(gòu)的加鎖
13.2 性能考慮因素
13.3 公平性
13.4 在synchronized和ReentrantLock之間進(jìn)行選擇
13.5 讀-寫鎖
第14章 構(gòu)建自定義的同步工具
14.1 狀態(tài)依賴性的管理
14.1.1 示例:將前提條件的失敗傳遞給調(diào)用者
14.1.2 示例:通過(guò)輪詢與休眠來(lái)實(shí)現(xiàn)簡(jiǎn)單的阻塞
14.1.3 條件隊(duì)列
14.2 使用條件隊(duì)列
14.2.1 條件謂詞
14.2.2 過(guò)早喚醒
14.2.3 丟失的信號(hào)
14.2.4 通知
14.2.5 示例:閥門類
14.2.6 子類的安全問題
14.2.7 封裝條件隊(duì)列
14.2.8 入口協(xié)議與出口協(xié)議
14.3 顯式的Condition對(duì)象
14.4 Synchronizer剖析
14.5 AbstractQueuedSynchronizer
14.6 java.util.concurrent同步器類中的 AQS
14.6.1 ReentrantLock
14.6.2 Semaphore與CountDownLatch
14.6.3 FutureTask
14.6.4 ReentrantReadWriteLock
第15章 原子變量與非阻塞同步機(jī)制
15.1 鎖的劣勢(shì)
15.2 硬件對(duì)并發(fā)的支持
15.2.1 比較并交換
15.2.2 非阻塞的計(jì)數(shù)器
15.2.3 JVM對(duì)CAS的支持
15.3 原子變量類
15.3.1 原子變量是一種"更好的volatile"
15.3.2 性能比較:鎖與原子變量
15.4 非阻塞算法
15.4.1 非阻塞的棧
15.4.2 非阻塞的鏈表
15.4.3 原子的域更新器
15.4.4 ABA問題
第16章 Java內(nèi)存模型
16.1 什么是內(nèi)存模型,為什么需要它
16.1.1 平臺(tái)的內(nèi)存模型
16.1.2 重排序
16.1.3 Java內(nèi)存模型簡(jiǎn)介
16.1.4 借助同步
16.2
16.2.1 不安全的
16.2.2 安全的
16.2.3 安全初始化模式
16.2.4 雙重檢查加鎖
16.3 初始化過(guò)程中的安全性
附錄A 并發(fā)性標(biāo)注
參考文獻(xiàn)
及時(shí)章 簡(jiǎn) 介
編寫正確的程序很難,而編寫正確的并發(fā)程序則難上加難。與串行程序相比,在并發(fā)程序中存在更多容易出錯(cuò)的地方。那么,為什么還要編寫并發(fā)程序?線程是Java語(yǔ)言中不可或缺的重要功能,它們能使復(fù)雜的異步代碼變得更簡(jiǎn)單,從而極大地簡(jiǎn)化了復(fù)雜系統(tǒng)的開發(fā)。此外,要想充分發(fā)揮多處理器系統(tǒng)的強(qiáng)大計(jì)算能力,最簡(jiǎn)單的方式就是使用線程。隨著處理器數(shù)量的持續(xù)增長(zhǎng),如何高效地使用并發(fā)正變得越來(lái)越重要。
1.1 并發(fā)簡(jiǎn)史
在早期的計(jì)算機(jī)中不包含操作系統(tǒng),它們從頭到尾只執(zhí)行一個(gè)程序,并且這個(gè)程序能訪問計(jì)算機(jī)中的所有資源。在這種裸機(jī)環(huán)境中,不僅很難編寫和運(yùn)行程序,而且每次只能運(yùn)行一個(gè)程序,這對(duì)于昂貴并且稀有的計(jì)算機(jī)資源來(lái)說(shuō)也是一種浪費(fèi)。
操作系統(tǒng)的出現(xiàn)使得計(jì)算機(jī)每次能運(yùn)行多個(gè)程序,并且不同的程序都在單獨(dú)的進(jìn)程中運(yùn)行:操作系統(tǒng)為各個(gè)獨(dú)立執(zhí)行的進(jìn)程分配各種資源,包括內(nèi)存,文件句柄以及安全證書等。如果需要的話,在不同的進(jìn)程之間可以通過(guò)一些粗粒度的通信機(jī)制來(lái)交換數(shù)據(jù),包括:套接字、信號(hào)處理器、共享內(nèi)存、信號(hào)量以及文件等。
之所以在計(jì)算機(jī)中加入操作系統(tǒng)來(lái)實(shí)現(xiàn)多個(gè)程序的同時(shí)執(zhí)行,主要是基于以下原因:
資源利用率。在某些情況下,程序必須等待某個(gè)外部操作執(zhí)行完成,例如輸入操作或輸出操作等,而在等待時(shí)程序無(wú)法執(zhí)行其他任何工作。因此,如果在等待的同時(shí)可以運(yùn)行另一個(gè)程序,那么無(wú)疑將提高資源的利用率。
公平性。不同的用戶和翠序?qū)τ谟?jì)算機(jī)上的資源有著同等的使用權(quán)。一種高效的運(yùn)行方式是通過(guò)粗粒度的時(shí)間分片(Time Slicing)使這些用戶和程序能共享計(jì)算機(jī)資源,而不是由一個(gè)程序從頭運(yùn)行到尾,然后再啟動(dòng)下一個(gè)程序。
便利性。通常來(lái)說(shuō),在計(jì)算多個(gè)任務(wù)時(shí),應(yīng)該編寫多個(gè)程序,每個(gè)程序執(zhí)行一個(gè)任務(wù)并在必要時(shí)相互通信,這比只編寫一個(gè)程序來(lái)計(jì)算所有任務(wù)更容易實(shí)現(xiàn)。
……
"我曾有幸在一個(gè)偉大的團(tuán)隊(duì)中工作,參與設(shè)計(jì)和實(shí)現(xiàn)在Java 5.0和Java 6等平臺(tái)中新增的并發(fā)功能。現(xiàn)在,仍然是這個(gè)團(tuán)隊(duì),將透徹地講解這些新功能,以及關(guān)于并發(fā)的一般性概念。并發(fā)已不再只是高級(jí)用戶談?wù)摰脑掝},每一位Java開發(fā)人員都應(yīng)該閱讀這本書。" —Martin Buchholz,Sun公司的JDK并發(fā)大師
"在過(guò)去30多年時(shí)間里,計(jì)算機(jī)性能一直遵循著摩爾定律,但從現(xiàn)在開始,它將遵循Amdahl定律。編寫能高效利用多處理器的代碼非常具有挑戰(zhàn)性。在這本書中介紹的一些概念和技術(shù),對(duì)于在當(dāng)前(以及未來(lái)的)系統(tǒng)上編寫安全的和可伸縮的代碼來(lái)說(shuō)都是非常有用的。"—Doron Rajwan,Intel公司研究人員
"如果你正在編寫、設(shè)計(jì)、調(diào)試、維護(hù)以及分析多線程的Java程序,那么本書正是你所需要的。如果你曾對(duì)某個(gè)方法進(jìn)行過(guò)同步,但卻不理解其中的原因,那么你以及你的用戶都有必要從頭至尾仔細(xì)地讀一讀這本書。" —Ted Neward,《Effective Enterprise Java》的作者
"Brian非常清晰地闡述了并發(fā)的一些基本問題與復(fù)雜性。對(duì)于使用線程并關(guān)注程序執(zhí)行性能的開發(fā)人員來(lái)說(shuō),這是一本必讀的書。" —Kirk Pepperdine,JavaPerformanceTuning.com網(wǎng)站CTO
"本書深入淺出地介紹了一些復(fù)雜的編程主題,是一本的Java并發(fā)參考手冊(cè)。書中的每一頁(yè)都包含了程序員日常需要應(yīng)對(duì)的問題(以及相應(yīng)的解決方案)。隨著摩爾定律的發(fā)展趨勢(shì)由提高處理器核的速度轉(zhuǎn)向增加處理器核的數(shù)量,如何有效地利用并發(fā)性已變得越來(lái)越重要,本書正好介紹了這些方面的內(nèi)容。" —Cliff Click博士,Azul Systems公司高級(jí)軟件工程師
"我對(duì)并發(fā)有著濃厚的興趣,并且與大多數(shù)程序員相比,我或許寫過(guò)更多存在線程死鎖的代碼,也在同步上犯了更多的錯(cuò)誤。在介紹Java線程和并發(fā)等主題的眾多書籍中,Brian的這本書可讀性,它通過(guò)循序漸進(jìn)的方式將一些復(fù)雜的主題闡述得很清楚。我將本書推薦給Java Specialists?Newsletter的所有讀者,因?yàn)樗粌H有趣,而且很有用,它介紹了當(dāng)前Java開發(fā)人員正在面對(duì)的許多問題。" —Heinz Kabutz博士,Java Specialists?Newsletter的維護(hù)者
"我一直努力想使一些簡(jiǎn)單的問題變得更簡(jiǎn)單,然而本書已經(jīng)簡(jiǎn)化了一個(gè)復(fù)雜但卻關(guān)鍵的主題:并發(fā)。這本書采用了創(chuàng)新的講解方法、簡(jiǎn)單明了的風(fēng)格,它注定會(huì)成為一本非常重要的書。 —Bruce Tate,《Beyond Java》的作者
這本書為Java開發(fā)人員在線程編程領(lǐng)域提供了不可多得的知識(shí)。我在讀這本書時(shí)受到了極大的啟發(fā),部分原因在于它詳細(xì)地介紹了Java中并發(fā)領(lǐng)域的API,但更重要的卻在于這本書以一種透徹并且易懂的方式來(lái)介紹復(fù)雜的并發(fā)知識(shí),這是其他書籍很難媲美的。 —Bill Venners,《Inside the Java Virtual Machine》的作者
java并發(fā)必讀書籍,雖然java版本比較早,還是買本收藏了
沖著豆瓣評(píng)分超高買的,但是買回來(lái)看了前幾章,不是很理解,感覺這本書不太適合新手來(lái)看
印刷還可以,紙質(zhì)質(zhì)量不是太精美,但不影響閱讀
書比我想象的薄,很開心因?yàn)楸〈砦铱梢员戎跋胂蟮母斓目赐?
書的質(zhì)量很不錯(cuò),至于內(nèi)容就不多說(shuō)了,畢竟是經(jīng)典,就是取快遞比以前麻煩了不少
重要的是書本身的內(nèi)容,到手的時(shí)候外包裝薄膜已經(jīng)破了,但是其實(shí)是沒什么影響的
Java并發(fā)程序設(shè)計(jì)最好的書不得不看,值得購(gòu)買
忘記評(píng)價(jià)了, 想學(xué)習(xí)并發(fā)多線程的必看書目。你值得一看。
本書關(guān)于并發(fā)編程的細(xì)節(jié)介紹得非常詳細(xì),看得出有很多實(shí)踐功底,而不是一個(gè)理論派,建議每一個(gè)學(xué)并發(fā)的同學(xué)看看
這本書是真的可以,這本書以前是大家一推再推,后來(lái)買回來(lái),講解有層次感。
concurrent包以及Java線程最好的解釋
現(xiàn)在的程序離不開多線程并發(fā),出現(xiàn)并發(fā)bug極其難調(diào)試,如果遵循該書中提到的規(guī)則,可以減少很多出錯(cuò)的可能。
對(duì)這本書早就久仰大名了,項(xiàng)目中用到了多線程操作。以前關(guān)于java高性能的資料很少,自己就在網(wǎng)上零星的找點(diǎn)資料。現(xiàn)在好了有了這本書,可以充分的了解線程的知識(shí)了。總之,這是一本java工程師不可多得的好書。
好書,對(duì)多線程、多并發(fā)有很深入的解釋,這本書還得常翻翻啊
這是一本非常好的java多線程書籍,對(duì)并發(fā)和線程池的應(yīng)用寫的很實(shí)用,也很清晰。
對(duì)于JAVA開發(fā),并發(fā)是非常重要的部分,這本書能讓你熟悉并發(fā)碰到的一些問題
了解Java并發(fā)編程的必讀佳作,打算認(rèn)真學(xué)習(xí)一下。
指導(dǎo)開發(fā)并發(fā)的書,我正在學(xué)習(xí)并發(fā)編程,很有幫助
書中對(duì)并發(fā)敘述比較詳盡,對(duì)于初學(xué)者來(lái)說(shuō),門檻可能高一些,對(duì)有基礎(chǔ)的學(xué)者來(lái)說(shuō),是編程能力提升的一大步。
買了600塊錢的書都在這了,每一本都挺不錯(cuò)的,正版,實(shí)惠,一起300塊,有的單本平時(shí)都要六七十最便宜,反正自己覺得值!堅(jiān)持看書,擴(kuò)展知識(shí)。
并發(fā)一直不太明白,希望通過(guò)這本書能搞清楚一些重要的概念與思想
迄今為止,唯一一本比較全面而又由淺入深的java并發(fā)方面的書,比concurrent java那本經(jīng)典的老書要更容易上手,適合想了解java并發(fā)編程的初學(xué)者
很早就想買的書,聽說(shuō)并發(fā)的知識(shí),這本書講的很不錯(cuò),英文太爛,只能看中文版
Java并發(fā)編程實(shí)戰(zhàn)(第16屆Jolt大獎(jiǎng)提名圖書,Java...
有深度的一本書,對(duì)理解多線程并發(fā)有一定的幫助,不過(guò)不適合新手看。里面介紹了一些同步工具類,BlockQueue,Fu***eTask,CountDownLatch,很有幫助。不過(guò)理論的東西太多,太深?yuàn)W,實(shí)際demo太少。
不錯(cuò),書很好,不過(guò)不推薦沒有多線程基礎(chǔ)的人看,建議去并發(fā)網(wǎng)找一些博文看一下學(xué)一點(diǎn)基礎(chǔ),然后再學(xué)這本書,那會(huì)高效很多。
JAVA關(guān)于并發(fā)的情況隨著海量數(shù)據(jù)的普遍而越來(lái)越常見,本書對(duì)JAVA并發(fā)編程實(shí)踐的講述對(duì)我很有借鑒和幫助
由淺入深,前幾章講一些基礎(chǔ)的概念;從第5章開始,越來(lái)越精彩。本書是JAVA多線程方面非常棒的一本實(shí)戰(zhàn)的書。對(duì)JAVA對(duì)線程的調(diào)用做了很詳細(xì)的介紹。推薦有一定開發(fā)經(jīng)驗(yàn)的JAVA開發(fā)人員閱讀。
不說(shuō)翻譯吧,我是Java云計(jì)算方向的程序員,現(xiàn)在上大三呢,j2ee什么的都掌握的差不多了,想提高自己的編程水平,一口氣買了5本,當(dāng)當(dāng)購(gòu)物很棒,以后還回來(lái)買的。??等讀了再來(lái)評(píng)論。