實踐Java高并發程序設計 版權信息
- ISBN:9787121273049
- 條形碼:9787121273049 ; 978-7-121-27304-9
- 裝幀:一般膠版紙
- 冊數:暫無
- 重量:暫無
- 所屬分類:>>
實踐Java高并發程序設計 本書特色
在過去單核cpu時代,單任務在一個時間點只能執行單一程序,隨著多核cpu的發展,并行程序開發就顯得尤為重要。
本書主要介紹基于java的并行程序設計基礎、思路、方法和實戰。**,立足于并發程序基礎,詳細介紹java中進行并行程序設計的基本方法。第二,進一步詳細介紹jdk中對并行程序的強大支持,幫助讀者快速、穩健地進行并行程序開發。第三,詳細討論有關“鎖”的優化和提高并行程序性能級別的方法和思路。第四,介紹并行的基本設計模式及java 8對并行程序的支持和改進。第五,介紹高并發框架akka的使用方法。*后,詳細介紹并行程序的調試方法。
實踐Java高并發程序設計 內容簡介
1. 結構清晰。本書一共8 章,總體上循序漸進,逐步提升。每一章都各自有鮮明的側重點,有利于讀者快速抓住重點。
2. 理論結合實戰。本書注重實戰,書中重要的知識點都安排了代碼實例,幫助讀者理解。同時也不忘記對系統的內部實現原理進行深度剖析。
3. 通俗易懂。本書盡量避免采用過于理論的描述方式,簡單的白話文風格貫穿全書,配圖基本上為手工繪制,降低了理解難度,并盡量做到讀者在閱讀過程中少盲點、無盲點。
推薦購買:
實踐Java高并發程序設計 目錄
第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.1 amdahl定律 1.4.2 gustafson定律 1.4.3 amdahl定律和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.3 volatile與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.1 synchronized的功能擴展:重入鎖 3.1.2 重入鎖的好搭檔:condition條件 3.1.3 允許多個線程同時訪問:信號量(semaphore) 3.1.4 readwritelock讀寫鎖 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 讀寫分離鎖來替換獨占鎖 4.1.4 鎖分離 4.1.5 鎖粗化 4.2 java虛擬機對鎖優化所做的努力 4.2.1 鎖偏向 4.2.2 輕量級鎖 4.2.3 自旋鎖 4.2.4 鎖消除 4.3 人手一支筆:threadlocal 4.3.1 threadlocal的簡單使用 4.3.2 threadlocal的實現原理 4.3.3 對性能有何幫助 4.4 無鎖 4.4.1 與眾不同的并發策略:比較交換(cas) 4.4.2 無鎖的線程安全整數:atomicinteger 4.4.3 java中的指針:unsafe類 4.4.4 無鎖的對象引用:atomicreference 4.4.5 帶有時間戳的對象引用:atomicstampedreference 4.4.6 數組也能無鎖:atomicintegerarray 4.4.7 讓普通變量也享受原子操作:atomicintegerfieldupdater 4.4.8 挑戰無鎖算法:無鎖的vector實現 4.4.9 讓線程之間互相幫助:細看synchronousqueue的實現 4.5 有關死鎖的問題 4.6 參考文獻 第5章 并行模式與算法 5.1 探討單例模式 5.2 不變模式 5.3 生產者-消費者模式 5.4 高性能的生產者-消費者:無鎖的實現 5.4.1 無鎖的緩存框架:disruptor 5.4.2 用disruptor實現生產者-消費者案例 5.4.3 提高消費者的響應時間:選擇合適的策略 5.4.4 cpu cache的優化:解決偽共享問題 5.5 future模式 5.5.1 future模式的主要角色 5.5.2 future模式的簡單實現 5.5.3 jdk中的future模式 5.6 并行流水線 5.7 并行搜索 5.8 并行排序 5.8.1 分離數據相關性:奇偶交換排序 5.8.2 改進的插入排序:希爾排序 5.9 并行算法:矩陣乘法 5.10 準備好了再通知我:網絡nio 5.10.1 基于socket的服務端的多線程模式 5.10.2 使用nio進行網絡編程 5.10.3 使用nio來實現客戶端 5.11 讀完了再通知我:aio 5.11.1 aio echoserver的實現 5.11.2 aio echo客戶端實現 5.12 參考文獻 第6章 java 8與并發 6.1 java 8的函數式編程簡介 6.1.1 函數作為一等公民 6.1.2 無副作用 6.1.3 申明式的(declarative) 6.1.4 不變的對象 6.1.5 易于并行 6.1.6 更少的代碼 6.2 函數式編程基礎 6.2.1 functionalinterface注釋 6.2.2 接口默認方法 6.2.3 lambda表達式 6.2.4 方法引用 6.3 一步一步走入函數式編程 6.4 并行流與并行排序 6.4.1 使用并行流過濾數據 6.4.2 從集合得到并行流 6.4.3 并行排序 6.5 增強的future:completablefuture 6.5.1 完成了就通知我 6.5.2 異步執行任務 6.5.3 流式調用 6.5.4 completablefuture中的異常處理 6.5.5 組合多個completablefuture 6.6 讀寫鎖的改進:stampedlock 6.6.1 stampedlock使用示例 6.6.2 stampedlock的小陷阱 6.6.3 有關stampedlock的實現思想 6.7 原子類的增強 6.7.1 更快的原子類:longadder 6.7.2 longadder的功能增強版:longaccumulator 6.8 參考文獻 第7章 使用akka構建高并發程序 7.1 新并發模型:actor 7.2 akka之hello world 7.3 有關消息投遞的一些說明 7.4 actor的生命周期 7.5 監督策略 7.6 選擇actor 7.7 消息收件箱(inbox) 7.8 消息路由 7.9 actor的內置狀態轉換 7.10 詢問模式:actor中的future 7.11 多個actor同時修改數據:agent 7.12 像數據庫一樣操作內存數據:軟件事務內存 ……
展開全部
實踐Java高并發程序設計 作者簡介
葛一鳴:51CTO特約講師,國家認證系統分析師,獲得Oracle OCP認證。長期從事Java軟件開發工作,對Java程序設計、JVM有深入的研究,對設計模式、人工智能、神經網絡、數據挖掘等技術有濃厚興趣,著有《自己動手寫神經網路》電子書和《實戰Java虛擬機》一書。
郭超:就職于杭州市道路運輸管理局信息中心,主要從事大型交通管理系統的分布式管理和并發模型設計,對Java的研究比較深入,專注于分布式應用和并發應用。