並發模式與應用實踐 (Concurrent Patterns and Best Practices: Build scalable apps with patterns in multithreading, synchronization, and functional programming)

[印度] 阿圖爾·S.科德(Atul S. Khot) 著

買這商品的人也買了...

相關主題

商品描述

本書詳細闡釋如何使用多線程、同步和函數式編程模式構建可擴展的應用程序,不僅涵蓋基本的並發概念、常用的多線程、同步和函數式編程模式等技術,還深入探討了不同的並發模型和並行算法及其在不同場景中的應用,此外提供了豐富的代碼示例,可以幫助你快速掌握並有效利用並發模式以解決實際的開發問題。
全書共7章,第1章概述並發編程,並介紹UNIX進程以及並發模式的管道和過濾器;第2章介紹一些關鍵的基本概念和Java內存模型的本質,你將瞭解共享狀態模型中出現的競爭條件和問題;第3章介紹其他同步模式,涉及有界緩沖區、讀寫鎖、計數信號量、倒計時鎖、循環屏障、future任務等;第4章討論線程池,涉及fork-join API、主動對象設計模式等主題;第5章介紹提高數據結構並發的各種策略,涉及無鎖堆棧和隊列、並發哈希算法、鎖條紋設計模式等;第6章討論函數式並發模式,並詳細介紹future模式;第7章討論actor模式和功能,涉及狀態封裝、become模式、基本的actor通信模式等。

選擇正確的並發體系結構對應用程序的設計和性能有重大影響,本書解釋瞭如何利用並行體系結構的不同特性來使代碼更快、更高效地運行。
書中全面闡述並發設計模式,並展示這些模式背後的基本原理及設計方案。首先介紹基本的並發概念,然後探索顯式鎖定、無鎖編程、future模式和actor模式;之後深入探討不同的並發模型和並行算法,並將它們應用於不同的實際場景中,以挖掘應用程序的真正潛力。本書幫助你完整瞭解多線程設計模式,比如主/從模式、leader/followers模式、map-reduce模式以及監視器模式,同時幫助你使用這些模式進行實際編碼。

通過閱讀本書,讀者將:
探索並行體系結構
熟悉並發模型
實現多線程模式以內化設計主題
深入瞭解並發設計模式
發現眾多Java線程抽象背後的設計原則
使用函數式並發模式

作者簡介

阿圖爾? S.科德(Atul S.Khot),身為Linux迷和擅長使用命令列的程式設計師,他精通多種程式語言,曾用C和C++編寫軟體程式。在大量使用Java程式設計並涉獵多種語言之後,他越來越喜歡Scala、Clojure和Erlang。他經常以演講嘉賓身分參加軟體會議,並曾擔任Dobb博士產品獎評審。他是《Scala Functional Programming Patterns》和《Learning Functional Data Structures and Algorithms》的作者。

目錄大綱

譯者序 前言 作者/評閱者簡介章並發簡介11.1 並發輕而易舉21.1.1 推動並發31.1.2 分時61.1.3 兩種並發編程模型71.2 訊息傳遞模型81.2.1 協調與通信101.2.2 流控制121.2. 3 分治策略141.2.4 進程狀態的概念151.3 共享記憶體和共享狀態模型161.3.1 執行緒交錯—同步的需要181.3.2 競爭條件和海森堡bug201.3.3 正確的記憶體可見性和happens-before原則211.3 .4 共享、阻塞和公平221.3.5 非同步與同步執行241.3.6 Java的非阻塞I/O251.4 模式與範式261.4.1 事件驅動的架構281.4.2 響應式程式設計291.4.3 actor範式311.4.4 訊息代理321.4.5 軟體事務性記憶體331.4.6 並行集合341.5 本章小結35第2章並發模式初探372.1 執行緒及其上下文382.2 競爭條件402.2.1 監視器模式442.2.正確性與不變性452.2.3 雙重檢查鎖定482.2.4 明確鎖定522.2.5 生產者/消費者模式602.2.6 比較和交換662.3 本章小結68第3章更多的線程模式703.1 有界緩衝區723.1 .1 策略模式—客戶端輪詢743.1.2 接管輪詢和睡眠的策略753.1.3 使用條件變數的策略773.2 讀寫鎖783.2.1 易讀的RW鎖803.2.2公平鎖843.3 計數信號量863.4 我們自己的重入鎖893.5 倒數鎖存器913.6 循環屏障953.7 future任務973.8 本章小結100第4章線程池1014.1 線程池1024.1.1 1104章線程池1014.1 線程池1024.1.1 11045.121045.單字統計的另一個版本1074.1.4 阻塞佇列1074.1.5 執行緒中斷語意1114.2 fork-join池1114.2.1 Egrep—簡易版1124.2.2 為什麼要使用遞歸任務1134.2.3 任務並行性1124.2.2 為什麼要使用遞歸任務1134.2.3 任務並行性1164.in. API實作快速排序1174.2.5 map-reduce技術1244.3 執行緒的工作竊取演算法1254.4 主動物件1284.4.1隱藏與適應1294.4.2 使用代理程式1294.5 本章小結132第5章提升並發性1335.1 無鎖堆疊1345.1.1 原子引用1345.1.2 堆疊的實現1355.2 無鎖的FIFO1375.2.1 堆疊的實現1355.2 無鎖的FIFO1375.2.1 流程如何運作無鎖.隊列1415.2.3 ABA問題1475.3 並發的雜湊演算法1525.3.1 add(v)方法1535.3.2 contains(v)方法1565.4 大鎖的方法1575.5 鎖條紋設計模式1595.6 本章小結式並發章第6636162第6 本章小結式並發章1636.不變性1646.1.1 不可修改的包裝器1656.1.2 持久性資料結構1676.1.3遞歸與不變性1696.2 future模式1706.2.1 apply方法1716.2.2 future—執行緒映射1736.2.3 future模式是異步的1746.2.4 糟糕的阻塞1776.2.5 函式組合1796.3 本章小結結書位結的並發1837.1.1 什麼是actor1857.1.2 狀態封裝1897.1.3 並行性在哪裡1907.1.4 未處理的訊息1927.1.5 become模式1937.1.6 讓它崩潰並恢復1977.17 actor97.17 actor. actor通訊—tell模式2047.1.9 pipeTo模式2057.2 本章小結207