java線程與并發程式設計實踐
線程和并發工具并非尤物,但是它們是正式應用的重要部分。本書會向你介紹java 8 update 60中線程特性以及并發工具的大部分内容。
第1章介紹了類thread和接口runnable。你會學習如何建立thread以及runnable對象,擷取和設定線程狀态、啟動線程、中斷線程,将一條線程插入另外一條線程以及觸發線程睡眠。
第2章關注同步。學習後你會解決一些問題,如沒有同步就無法解決的競态條件。你也能學到如何建立同步方法、塊,以及如何使用忽略互斥通路的輕量級同步。
第3章探索等待和通知的重要話題。我們首先概覽了類object中支援這類概念的api,并且通過生産者、消費者應用程式來示範這一api,即一條線程産生條目而另一條線程消費之。
第4章介紹了之前3章沒有覆寫的3個概念。首先,你會學習到線程組,可能想象不到它那麼有用。其次,你會探索線程本地變量。最後,會學習到定時器架構,它簡化了線程的定時任務。
前4章覆寫了低級的線程方法。第5章通過介紹并發工具切換至進階方法,它在簡化多線程應用程式的同時也改善了性能。這一章之後還會介紹executor、callable以及future。
第6章關注同步器(進階的同步構造)。你會學到倒計時門闩(countdown latch,一條或多條線程一直等在“門口”,直到另一條線程打開了這扇門,此時其他的線程才能繼續執行)、同步屏障、交換器、信号量以及phaser。
第7章介紹了鎖架構,它提供了大量針對鎖及條件等待的接口和類,這種方式不同于對象原生的基于鎖的同步以及object的等待/通知機制。同時,它也做了一些諸如鎖輪訓方面的改善。
最後,第8章介紹了額外的并發工具,這部分内容在第5章到第7章沒有涵蓋。這章特别介紹了并發集合、原子變量、fork/join架構以及completion service。
每章都以各式各樣的練習結尾,旨在幫助你掌握這些内容。除了問答題和判斷題之外,你也經常遇到程式設計練習。附錄a提供了這些問題的答案。
附錄b提供了一個基于swing線程的教程。你會學到swing的單線程程式設計模型和大量api,這些api避免了在圖形上下文中使用額外線程導緻的問題。你也會探索一個幻燈片應用程式,并且用這種好玩的方式結束本書。
<a href="https://yq.aliyun.com/articles/91464">第1章 thread和runnable</a>
<a href="https://yq.aliyun.com/articles/91464">1.1 thread和runnable簡介</a>
<a href="https://yq.aliyun.com/articles/91481">1.2 操作更進階的線程任務</a>
<a href="https://yq.aliyun.com/articles/91486">1.3 練習</a>
<a href="https://yq.aliyun.com/articles/91491">1.4 小結</a>
<a href="https://yq.aliyun.com/articles/91498">第2章 同步</a>
<a href="https://yq.aliyun.com/articles/91498">2.1 線程中的問題</a>
<a href="https://yq.aliyun.com/articles/91503">2.2 同步臨界區的通路</a>
<a href="https://yq.aliyun.com/articles/91509">2.3 謹防活躍性問題</a>
<a href="https://yq.aliyun.com/articles/91517">2.4 volatile和final變量</a>
<a href="https://yq.aliyun.com/articles/91521">2.5 練習</a>
<a href="https://yq.aliyun.com/articles/91523">2.6 小結</a>
第3章 等待和通知
第4章 額外的線程能力
第2部分 并發工具類
第5章 并發工具類和executor架構
第6章 同步器
第7章 鎖架構
第8章 額外的并發工具類
第3部分 附錄
附錄a 練習題答案
附錄b swing中的線程