1. 程式人生 > >《 Java併發程式設計從入門到精通》目錄和序言

《 Java併發程式設計從入門到精通》目錄和序言

目 錄

第一部分:執行緒併發基礎

第1章 概念部分   1 1.1 CPU核心數、執行緒數 (主流cpu,執行緒數的大體情況說一下) 1 1.2 CPU時間片輪轉機制 2 1.3 什麼是程序和什麼是執行緒 4 1.4 程序和執行緒的比較 5 1.5 什麼是並行執行 7 1.6 什麼是多併發執行 8 1.7 什麼是吞吐量 9 1.8  多併發程式設計的意義及其好處和注意事項 10 1.9  分散式與併發運算關係 11 1.10 Linux和Window多併發可以採取不的一樣機制(apache和tomcat??) 6 第2章 認識Java裡面的Thread       12 2.1 執行緒的實現三種方法 (先感受一下建立幾個多執行緒方法例項演練)12 2.2 Thread裡面的屬性和方法 (通過工具看看能不能監控到thread裡面的一些屬性值)16 2.3 執行緒的生命週期 19 2.4 什麼是守護執行緒 31 2.5 執行緒組 33 2.6 當前執行緒副本ThreadLocal(用意和實際應用場景) 35 2.7 執行緒異常的處理(單個和組)38 第3章 Thread安全     39 3.0 執行緒的記憶體模型 3.1 什麼是不安全(寫個程式碼例子多併發帶來的一些問題,變數互串,相互影響) 39 3.2 什麼是安全(寫個程式碼例子,安全的三種(多例項,加鎖,執行緒安全的集合類)情況,引出鎖)         43 3.3 第一種鎖:隱式鎖,又稱執行緒同步synchronized(舉幾個例子實際演示一下,及其寫法注意,帶來的額外開銷) 45 3.4 第二種鎖:顯示鎖,Lock;及其與synchronized的區別(ReentrantReadWriteLock) 49 3.5 什麼是死鎖 53 3.6 看如下程式碼的鎖有用嗎 55 3.7 關鍵字:volatile       57 3.8 原子操作:atomic(atomic包FutureTask, AtomicLong等)   59 3.9 執行緒同步和鎖的原理(有待弄清楚鎖的執行機制和原理) 61 3.10 單利模式的寫法 63 第4章 執行緒安全的集合類     64 4.1 java.util.concurrent. ConcurrentMap 64 4.2 java.util.concurrent.ConcurrentHashMap 66 4.3 java.util.concurrent. CopyOnWriteArrayList 68 4.4 java.util.concurrent. CopyOnWriteArraySet 70 4.5 非concurrent下面的執行緒安全集合類(Hashtable 和 Vector 和StringBuffer) 72 4.6 集合類安全的實現原理剖析 75

第二部分:執行緒併發晉級之高階部分 75

第5章 多執行緒之間互動:執行緒閥 5.1 執行緒安全的阻塞佇列BlockingQueue (詳解一翻java.util.concurrent.ConcurrentLinkedDeque 和java.util.concurrent. ConcurrentLinkedQueue) 76 5.2 同步計數器CountDownLatch   81 5.3 迴圈障礙CyclicBarrier   84 5.4 訊號裝置Semaphore 87 5.5 任務機制FutureTask 90 第6章 執行緒池 115 6.1 什麼是執行緒池 90 6.2 newFixedThreadPool的使用   92 6.3 newCachedThreadPool 的使用 94 6.4 newSingleThreadExecutor的使用(插圖,原理) 96 6.5 執行緒池的好處(未使用的時候的情況,使用後的情況) 98 6.4 認識ExecutorService(ThreadFactory先建立一個執行緒及其引數的詳細講解,如何自定義執行緒池) 100 6.5 執行緒池的原理 106 6.6 執行緒池在工作中的錯誤使用 112 第7章 JDK7新增的Fork/Join 115 7.1 什麼是Fork/Join 架構 115 7.2 建立實際使用Fork/Join 執行緒池118 7.3 合併任務的結果 123 7.4 工作原理 126 7.5 非同步執行任務 130 7.6 在任務中丟擲異常 135 7.7 結束任務 140 7.8 實際應用場景 143

第三部分:實際的使用與監控與拓展

第8章 執行緒,執行緒池在實際網際網路專案開發中的應用 8.1 Servlet執行緒的設計 8.2 執行緒池如何合理設計與設定 8.3 Tomcat中執行緒池如何合理設定 8.4 Nginx執行緒池 8.5 資料庫連線池 8.6 工作中如何實現在分散式系統中實現高併發 第9章 執行緒的監控及其日常工作中如何分析 9.1 Java執行緒池的監控 9.2 ForkJoin的監控 9.3 Java記憶體模型 9.4 視覺化監控工具的使用 9.5 Linux執行緒分析監控使用方法 9.6 Linux分析監控的執行指令碼 9.7 Eclipse裡面如何除錯併發程式 9.8 如何通過壓力測試,測試伺服器的抗壓能力 9.9 MultithreadedTC測試併發簡單介紹 第10章 執行緒在Android開發中的體現 10.1Android程序的基本知識 10.2Android程序的生命週期 10.3Android中Activity的生命週期 10.4Android執行緒的執行機制 10.5Android非同步執行緒的處理方法 10.6Android非同步執行緒的原理與實現 附錄一:JVM的引數
附錄二:Jstat的語法 附錄三:Jstat中的一些術語的中文解釋 附錄四:Tomcat裡面的server.xml中Executor的引數 附錄五:Thread的API 結束語

 序言

古時候,有一個自認為佛學造詣很深的人,聽說某個寺廟裡有位德高望重的老禪師,便去拜訪。老禪師十分恭敬地接待了他,他講了自己的很多心得,希望老禪師給予指點。      老禪師聽後,沒有說話,只是為他沏茶。可是在倒水時,明明水已經滿了,老禪師還在倒,而不顧茶水都已經溢了出來。最後,這個人終於忍不住說:“大師,杯子已經滿了。”老禪師這才住手。這個人問老禪師:“大師,請你指點。”老禪師說:“我已經教你了。”這個人不明所以,只好回去了。冥思苦想,終於有一天他想明白了:如果自己不把舊茶倒掉,又哪有空間來添續新茶?      空杯心態不僅是一種心境,更是一種做人的境界。其實我們學習,和看任何一本書的時候相信如果以空杯的心態去看的話,相信收穫會更多。功夫巨星李小龍就非常推崇空杯心態,他說:“清空你的杯子,方能再行注滿,空無以求全。”      最近發現市面上有些書籍要不就是直譯過來的,很多不實用,要不就是講的太玄乎其神了,而此書換一種方式,換一種思路來理解多併發和多執行緒,讓多線,多併發沒有那麼玄乎;這本書讀完讓你菜鳥變大牛。作者以10年的開發經驗做總結,希望能幫助讀者少走一些彎路。本書有淺入深再到實際。作者建議大家,不要動不動就Hadoop,動不動就分散式,其實將Java裡面的多併發程式設計學習好了,其實就可以解決很多的問題的。      建議大家看此書的時候,結合JDK的原始碼,一起看,每個例項都要執行看看,還有看看咱們工作中,相關的設計是否合理。紙上得來終覺淺,絕知此事要躬行。一定要多加練習才行。

精彩書評:

      對於一個初學者,或者是工作了幾年的java工程師來說,通過詳細的讀此書,相信都一定會有或多或少的收穫,看到Jack(即作者)幾個月來的辛勤的勞動成功,表示感到欽佩。本書幾乎涵蓋了所有Java多併發,多執行緒開發相關的學習資料。相信此書一定會成為一個很好的多併發方面的,書不離手的開發手冊。                                                                          –Steve.Xiu

[10年Java工作經驗,現就職於alibaba高階開發]

韓愈有言“師者, 傳道受業解惑也”,讀完此書,對作者肅然起敬,他不正是秉承了這樣的師道在作此書嘛! 十多年的開發經驗傾囊相授,言之諄諄,例之鑿鑿,實為難得。對Java多執行緒的知識講解得如此詳盡,如此深入,給人一種一覽眾山小的感覺。期待更多力作面世!                                                                          –XiaoShuang.Li(李小雙) [10年Java工作經驗,知名網際網路公司專案經理]     我在IT軟體行業從業已12年。作為“前輩”,衡量一名“程式猿”的技術實力,一般會看你是否具備深度的系統性能調優的能力。雲端計算的時代,對系統的高效能、高併發要求更高。所以,深入瞭解和掌握Java的多執行緒機制原理,非常有用,非常必要。
這本書的所有知識均來自於作者多年的專案實踐,傾注了作者多年的心血。講解的深入淺出,讓你掌握起來毫不費力。如果你想成為一名架構師,如果你想成為一名資深的技術大牛,強烈推薦你讀一讀,你值得擁有!                                                                            –Justin.Han(韓劍鋒)
[12年Java工作經驗,曾在多家IT公司擔任研發總監、技術總監] 在進行併發程式設計開發之前,深入的學習併發理論知識非常有必要,比如閱讀併發容器的原始碼,本書通過大量程式碼例項,講解併發知識,非常細緻。而在實戰中併發程式的問題定位也是非常麻煩,相信本書的第九章能給初學者一些參考。                                                                         –Kiral(方騰飛) [方騰飛,阿里巴巴資深開發工程師,ifeve.com創始人] 感謝:      書上有一部分內容都是有網友精彩提供,在此表示感謝!也謝謝那些精彩書評的朋友,謝謝大家的支援。