Scala 並發編程
內容描述
<內容介紹>
免費的性能午餐已經結束——Intel、AMD 和 Sparc、PowerPC 等主要的處理器生產廠商,從前使用的提高 CPU 性能的傳統方法已經走到盡頭,單核處理器的主頻多年來一直踏步不前,當今主流的CPU 製造技術是超線程和多核架構。面對電腦性能的挑戰和硬件架構的改變,迷惘的軟件開發者們應何去何從?本書為大家展示了一條光明的康莊大道! 《Scala併發編程》由 Scala 語言的發明者,瑞士洛桑聯邦理工大學教授 Martin Odersky 的愛徒普羅科佩茨博士撰寫。作者根據自己在 Scala 語言開發團隊中的工作經驗,全面地介紹了併發編程技術。這些併發編程技術包括:併發程序設計的基礎知識和背景知識、常用併發實用組件(如線程池、原子變量和併發集合)的用法、Scala 專用併發框架(Future 和 Promise API)的用法、Scala 並行集合框架的用法、使用響應式擴展框架編寫基於事件的程序和異步程序的方式、用於編寫事務程序的 ScalaSTM庫以及 Actor 編程模型和 Akka 框架。作者在本書中列舉的實例既介紹了理論知識又展示了實踐方法,同時還能夠開拓讀者的編程思路。此外,作者還在每章末尾提供了大量編程習題,幫助讀者測試和鞏固知識。
<章節目錄>
前言 XVII1 簡介 併發程序設計 傳統併發編程技術概述 現代併發範式 Scala 的優點 預備知識 執行Scala 程序 Scala 基礎知識 小結 練習2 JVM 和Java 內存模型中的併發處理方式 進程和線程 創建和啟動線程 原子執行方式 調整次序 監控器和同步 死鎖 保衛鎖 中斷線程和正常關閉 Volatile 變量 Java 內存模型 不可變對象和final 字段 小結 練習3 構建併發程序的傳統材料 Executor 和ExecutionContext 對象 原子型基元 原子變量 無鎖編程 以明確方式實現鎖 ABA 問題 惰性值 併發集合 併發隊列 併發集和映射 併發遍歷 創建和處理進程 小結 練習4 使用Future 和Promise 對象編寫異步程序 Future 類 執行Future 計算 Future 對象的回調函數 Future 計算和異常 使用Try 類型 致命異常 Future 對象中的函數組合 Promise 類 轉換基於回調函數的API
擴展Future API 取消異步計算操作 Future 對象和阻塞操作 等待Future 對象 在異步計算內部執行阻塞操作 Scala Async 庫 可選的Future 框架 小結 練習5 數據並行集合 Scala 集合概述 並行集合的用法 並行集合類的層次結構 配置並行等級 在JVM 中度量性能 使用並行集合的註意事項 非可並行化集合 非可並行化操作 並行操作的副作用 不確定的並行操作 可交換和可結合操作符 組合使用並行集合和併發集合 弱一致性迭代器 實現自定義的並行集合 分離器 組合器 可選的數據並行框架 ScalaBlitz 框架中的集合層次結構 小結 練習6 使用Reactive Extensions 編寫併發程序 創建Observable 對象 Observable 對象和異常 Observable 協定 實現自定義Observable 對象 通過Future 對象創建Observable 對象 Subion 對象 組合Observable 對象 嵌套的Observable 對象 處理完善Observable 對象失敗的情況 Rx 調度器 使用自定義調度器編寫UI 應用程序 Subject 特徵和自頂向下的響應式編程 小結 練習7 基於軟件的事務內存 原子變量帶來的麻煩 使用基於軟件的事務內存 事務引用 使用atomic 語句
組合事務 事務與副作用 單操作事務 嵌套事務 事務和異常 重新嘗試執行事務 通過超時設置重新嘗試執行事務 事務集合 事務局部變量 事務數組 事務映射 小結 練習8 Actor 使用Actor 模型 創建Actor 系統和Actor 實例 管理無法正常處理的消息 Actor 實例的行為和狀態 Akka 框架中的Actor 層次結構 識別Actor 對象 Actor 對象的生命周期 Actor 對象之間的通信 請求模式 轉發模式 停止Actor 對象 Actor 監督 遠程Actor 對象 小結 練習9 實用併發技術 工欲善其事,必先利其器 組合使用多種框架——編寫遠程文件管理器 創建文件系統模型 服務器接口 客戶端導航API 客戶端的用戶界面 實現客戶端程序的邏輯 改進遠程文件管理器 調試併發程序 死鎖和暫停處理過程 調試運行結果不正確的程序 性能調試 小結 練習