實戰Java高並發程序設計 | 拾書所

實戰Java高並發程序設計

$ 393 元 原價 414

<內容簡介>

在過去單核CPU時代,單任務在一個時間點只能執行單一程序,隨著多核CPU的發展,並行程序開發就顯得尤為重要。
本書主要介紹基於Java的並行程序設計基礎、思路、方法和實戰。1,立足於並發程序基礎,詳細介紹Java中進行並行程序設計的基本方法。第二,進一步詳細介紹JDK中對並行程序的強大支持,幫助讀者快速、穩健地進行並行程序開發。第三,詳細討論有關“鎖”的優化和提高並行程序性能級別的方法和思路。第四,介紹並行的基本設計模式及Java 8對並行程序的支持和改進。第五,介紹高並發框架Akka的使用方法。最後,詳細介紹並行程序的調試方法。

<目錄>
第1章走入並行世界
1.1何去何從的並行計算
1.1.1忘掉那該死的並行
1.1.2可怕的現實:摩爾定律的失效
1.1.3柳暗花明:不斷地前進
1.1.4光明或是黑暗
1.2你必須知道的幾個概念
1.2.1同步(Synchronous)和異步(Asynchronous)
1.2.2並發(Concurrency)和並行(Parallelism)
1.2.3臨界區
1.2.4阻塞(Blocking)和非阻塞(Non—Blocking)
1.2. 5死鎖(Deadlock)、飢餓(Starvation)和活鎖(Livelock)
1.3並發級別
1.3.1阻塞(Blocking)
1.3.2無飢餓(Starvation—Free)
1.3.3無障礙(Obstruction—Free)
1.3.4無鎖(Lock—Free)
1.3.5無等待(Wait—Free)
1.4有關並行的兩個重要定律
1.4.1Amdahl定律
1.4.2Gustafson定律
1.4.3Amdahl定律和Gustafson定律是否相互矛盾
1.5回到Java:JMM
1.5 .1原子性(Atomicity)
1.5.2可見性(Visibility)
1.5.3有序性(Ordering)
1.5.4哪些指令不能重排:Happen—Before規則
1.6參 ​​考文獻
第2章Java並行程序基礎
2.1有關線程你必須知道的事
2.2初始線程:線程的基本操作
2.2.1新建線程
2.2.2終止線程
2.2.3線程中斷
2.2.4等待(wait)和通知(notify)
2.2.5掛起(suspend)和繼續執行(resume)線程
2.2.6等待線程結束(join)和謙讓(yield)
2.3volatile與Java內存模型(JMM)
2.4分門別類的管理:線程組
2.5駐守後台:守護線程(Daemon)
2.6先乾重要的事:線程優先級
2.7線程安全的概念與synchronized
2.8程序中的幽靈:隱蔽的錯誤
2.8.1無提示的錯誤案例
2.8.2並發下的ArrayList
2.8.3並發下詭異的HashMap
2.8.4初學者常見問題:錯誤的加鎖
2.9參考文獻
第3章JDK並發包
3.1多線程的團隊協作:同步控制
3.1.1synchronized的功能擴展:重入鎖
3.1.2重入鎖的好搭檔:Condition條件
3.1.3允許多個線程同時訪問:信號量(Semaphore)
3.1.4ReadWriteLock讀寫鎖
3.1.5倒計時器:CountDownLatch
3.1.6循環柵欄:CyclicBarrier
3.1.7線程阻塞工具類:LockSupport
3.2線程復用:線程池
3.2.1什麼是線程池
3.2.2不要重複發明輪子:JDK對線程池的支持
3.2.3刨根究底:核心線程池的內部實現
3.2.4超負載了怎麼辦:拒絕策略
3.2.5自定義線程創建:ThreadFactory
3.2.6我的應用我做主:擴展線程池
3.2.7合理的選擇:優化線程池線程數量
3.2.8堆棧去哪裡了:在線程池中尋找堆棧
3.2.9分而治之:Fork/Join框架
3.3不要重複發明輪子:JDK的並發容器
3.3.1超好用的工具類:並發集合簡介
3.3.2線程安全的HashMap
3.3.3有關List的線程安全
3.3.4高效讀寫的隊列:深度剖析ConcurrentLinkedQueue
3.3.5高效讀取:不變模式下的CopyOnWriteArrayList
3.3.6數據共享通道:BlockingQueue
3.3.7隨機數據結構:跳錶(SkipList)
3.4參考資料
第4章鎖的優化及註意事項
4.1有助於提高“鎖”性能的幾點建議
4.1.1減小鎖持有時間
4.1.2減小鎖粒度
4.1.3讀寫

Brand Slider