天天看點

Java核心技術卷I基礎知識導讀

前  言

緻讀者

1995年年底,java語言在internet舞台一亮相便名聲大噪。其原因在于它将有望成為連接配接使用者與資訊的萬能膠,而不論這些資訊來自web伺服器、資料庫、資訊提供商,還是任何其他管道。事實上,就發展前景而言,java的地位是獨一無二的。它是一種完全可信賴的程式設計語言,得到了除微軟之外的所有廠家的認可。其固有的可靠性與安全性不僅令java程式員放心,也令使用java程式的使用者放心。java内建了對網絡程式設計、資料庫連接配接、多線程等進階程式設計任務的支援。

1995年以來,已經釋出了java開發工具包(java development kit)的9個主要版本。在過去的20年中,應用程式程式設計接口(api)已經從200個類擴充到超過4000個類。現在這些api覆寫了使用者界面建構、資料庫管理、國際化、安全性以及xml處理等各個不同的領域。

本書是《java核心技術》第10版的卷Ⅰ。自《java核心技術》出版以來,每個新版本都盡可能快地跟上java開發工具箱發展的步伐,而且每一版都重新改寫了部分内容,以便适應java的最新特性。在這一版中,已經反映了java 标準版(java se 8)的特性。

與前幾版一樣,本版仍然将讀者群定位在那些打算将java應用到實際工程項目中的程式設計人員。本書假設讀者是一名具有程式設計語言(除java之外)堅實背景知識的程式設計人員,并且不希望書中充斥着玩具式的示例(諸如,烤面包機、動物園的動物或神經質的跳動文本)。這些内容絕對不會在本書中出現。本書的目标是讓讀者充分了解書中介紹的java語言及java類庫的相關特性,而不會産生任何誤解。

在本書中,我們選用大量的示例代碼示範所讨論的每一個語言特性和類庫特性。我們有意使用簡單的示例程式以突出重點,然而,其中的大部分既不是赝品也沒有偷工減料。它們将成為讀者自己編寫代碼的良好開端。

我們假定讀者願意(甚至渴望)學習java提供的所有進階特性。例如,本書将詳細介紹下列内容:

面向對象程式設計

反射與代理

接口與内部類

異常處理

泛型程式設計

集合架構

事件監聽器模型

使用swing ui工具箱進行圖形使用者界面設計

并行操作

随着java類庫的爆炸式增長,一本書無法涵蓋程式員需要了解的所有java特性。是以,我們決定将本書分為兩卷。卷i(本書)集中介紹java語言的基本概念以及圖形使用者界面程式設計的基礎知識。卷Ⅱ(進階特性)涉及企業特性以及進階的使用者界面程式設計,其中詳細讨論下列内容:

流api

檔案處理與正規表達式

資料庫

xml處理

注釋

國際化

網絡程式設計

進階gui元件

進階圖形

原生方法

本書中難免出現錯誤和不準确之處。我們很想知道這些錯誤,當然,也希望同一個問題隻被告知一次。我們在網頁http://horstmann.com/corejava中以清單的形式給出了常見的問題、bug修正和解決方法。在勘誤頁(建議先閱讀一遍)最後附有用來報告bug并提出修改意見的表單。如果我們不能回答每一個問題或沒有及時回複,請不要失望。我們會認真地閱讀所有的來信,感謝您的建議使本書後續的版本更清晰、更有指導價值。

關于本書

第1章概述java與其他程式設計語言不同的性能。解釋這種語言的設計初衷,以及在哪些方面達到了預期的效果。然後,簡要叙述java誕生和發展的曆史。

第2章詳細論述如何下載下傳和安裝jdk以及本書的程式示例。然後,通過編譯和運作3個典型的java程式(一個控制台應用、一個圖形應用、一個applet),指導讀者使用簡易的jdk、可啟用java的文本編輯器以及一個java ide。

第3章開始讨論java 語言。這一章涉及的基礎知識有變量、循環以及簡單的函數。對于c或c++程式員來說,學習這一章的内容将會感覺一帆風順,因為這些語言特性的文法本質上與c語言相同。對于沒有c語言程式設計背景,但使用過其他程式設計語言(如visual basic)的程式員來說,仔細地閱讀這一章是非常必要的。

面向對象程式設計(object-oriented programming, oop)是當今程式設計的主流,而java是一種完全面向對象的語言。第4章将介紹面向對象兩個基本成分中最重要的——封裝,以及java語言實作封裝的機制,即類與方法。除了java語言規則之外,還對如何完成合理的oop設計給出了忠告。最後,介紹奇妙的javadoc工具,它将代碼注釋轉換為一組包含超連結的網頁。熟悉c++的程式員可以快速地浏覽這一章,而沒有面向對象程式設計背景的程式員應在進一步學習java之前花一些時間了解oop的有關概念。

類與封裝僅僅是oop中的一部分,第5章将介紹另一部分——繼承。繼承使程式員可以使用現有的類,并根據需要進行修改。這是java程式設計中的一個基礎技術。java中的繼承機制與c++的繼承機制十分相似。c++程式員隻需關注兩種語言的不同之處即可。

第6章展示如何使用java的接口。接口可以讓你的了解超越第5章的簡單繼承模型。掌握接口可以充分獲得java的完全的面向對象程式設計能力。介紹接口之後,我們将轉而介紹lambda表達式(lambda expression),這是一種簡潔的方法,用來表述可以在以後某個時間點執行的代碼塊。本章還将介紹java的一個有用的技術特性——内部類。

第7章讨論異常處理(exception handling),即java的一種健壯機制,用于處理可正常運作程式可能出現意外的情況。異常提供了一種将正常處理代碼與錯誤處理代碼分開的有效手段。當然,即使程式能夠處理所有異常條件,仍然有可能無法按照預計的方式工作。這一章的後半部分将給出大量實用的調試技巧。

第8章概要介紹泛型程式設計。泛型程式設計可以讓程式更可讀、更安全。我們會展示如何使用強類型機制,而舍棄不安全的強制類型轉換,以及如何處理與舊版本java相容所帶來的複雜問題。

第9章讨論的是java平台的集合架構。如果希望收集多個對象并在以後擷取這些對象,就應當使用集合,而不要簡單地把這些元素放在一個數組中,這是這種情況下最适用的做法。這一章會介紹如何充分利用内建的标準集合。

第10章開始介紹gui程式設計。我們會讨論如何建立視窗、如何在視窗中繪圖、如何利用幾何圖形繪圖、如何采用多種字型格式化文本,以及如何顯示圖像。

第11章将詳細讨論抽象視窗工具包(abstract window toolkit,awt)的事件模型。你會看到如何編寫代碼來響應事件,如滑鼠點選事件或按鍵事件。同時,你還會看到如何處理基本的gui元素,如按鈕和面闆。

第12章詳細讨論swing gui工具包。swing工具包允許建立跨平台的圖像使用者界面。在這裡你會了解各種按鈕、文本元件、邊框、滑塊、清單框、菜單以及對話框的有關内容。不過,一些更進階的元件會在卷ii中讨論。

第13章介紹如何将程式部署為應用或applet。在這裡我們會描述如何将程式打包在jar檔案中,以及如何使用java web start和applet機制在internet上釋出應用。另外還會解釋java程式部署之後如何存儲和擷取配置資訊。

第14章是本書的最後一章,這一章将讨論并發,并發能夠讓程式任務并行執行。在當今這個時代,大多數處理器都有多個核心,你往往希望這些核心都在工作,并發是java技術的一個重要而且令人振奮的應用。

附錄列出了java語言的保留字。

約定

本書使用以下圖示表示特殊内容。

注釋:“注釋”資訊會用這樣的“注釋”圖示标志。

提示:“提示”資訊會用這樣的“提示”圖示标志。

警告:對于可能出現的危險,我們用一個“警告”圖示做出警示。

c++注釋:在本書中有許多用來解釋java與c++之間差别的c++注釋。對于沒有c++程式設計背景,或者不擅長c++程式設計、把它當做一場噩夢不願再想起的程式員來說,可以跳過這些注釋。

java提供了一個很大的程式設計庫,即應用程式程式設計接口。第一次使用api調用時,我們會在該節的結尾給出一個概要描述。這些描述十分通俗易懂,希望能夠比聯機api文檔提供更多的資訊。類、接口或方法名後面的編号是介紹該特性的jdk版本号,如下例所示:

應用程式程式設計接口1.2

程式(源代碼見本書網站)以程式清單形式給出,例如:

程式清單1-1 inputtest/inputtest.java

示例代碼

本書網站http://horstmann.com/corejava以壓縮的形式提供了書中的所有示例代碼。可以用熟悉的解壓縮程式或者用java開發包中的jar實用程式解壓這個檔案。有關安裝java開發包和示例代碼的詳細資訊請參看第2章。

目  錄

譯者序

前言

緻謝

第1章 java程式設計概述  

<a href="https://yq.aliyun.com/articles/82203" target="_blank">1.1 java程式設計平台  </a>

<a href="https://yq.aliyun.com/articles/82208" target="_blank">1.2.1 簡單性  </a>

<a href="https://yq.aliyun.com/articles/82209" target="_blank">1.2.2 面向對象  </a>

<a href="https://yq.aliyun.com/articles/82211" target="_blank">1.2.3 分布式  </a>

<a href="https://yq.aliyun.com/articles/82212" target="_blank">1.2.4 健壯性  </a>

<a href="https://yq.aliyun.com/articles/82218" target="_blank">1.2.6 體系結構中立  </a>

<a href="https://yq.aliyun.com/articles/82223" target="_blank">1.2.8 解釋型  </a>

<a href="https://yq.aliyun.com/articles/82225" target="_blank">1.2.9 高性能  </a>

<a href="https://yq.aliyun.com/articles/82227" target="_blank">1.2.10 多線程  </a>

<a href="https://yq.aliyun.com/articles/82229" target="_blank">1.2.11 動态性  </a>

<a href="https://yq.aliyun.com/articles/82230" target="_blank">1.3 java applet與internet  </a>

<a href="https://yq.aliyun.com/articles/82231" target="_blank">1.4 java發展簡史  </a>

<a href="https://yq.aliyun.com/articles/82234" target="_blank">1.5 關于java的常見誤解 </a>

第2章 java程式設計環境  

<a href="https://yq.aliyun.com/articles/82236" target="_blank">2.1.1 下載下傳jdk  </a>

<a href="https://yq.aliyun.com/articles/82238" target="_blank">2.1.2 設定jdk  </a>

<a href="https://yq.aliyun.com/articles/82244" target="_blank">2.3 使用內建開發環境 </a>

<a href="https://yq.aliyun.com/articles/82246" target="_blank">2.4 運作圖形化應用程式  </a>

第3章 java的基本程式設計結構  

<a href="https://yq.aliyun.com/articles/82250" target="_blank">3.1 一個簡單的java應用程式  </a>

<a href="https://yq.aliyun.com/articles/82253" target="_blank">3.2 注釋 </a>

<a href="https://yq.aliyun.com/articles/82255" target="_blank">3.3 資料類型  </a>

<a href="https://yq.aliyun.com/articles/82256" target="_blank">3.3.1 整型  </a>

<a href="https://yq.aliyun.com/articles/82258" target="_blank">3.3.2 浮點類型  </a>

<a href="https://yq.aliyun.com/articles/82260" target="_blank">3.3.3 char類型  </a>

<a href="https://yq.aliyun.com/articles/82265" target="_blank">3.3.5 boolean類型  </a>

<a href="https://yq.aliyun.com/articles/82274" target="_blank">3.4.2 常量  </a>

<a href="https://yq.aliyun.com/articles/82275" target="_blank">3.5 運算符  </a>

<a href="https://yq.aliyun.com/articles/82281" target="_blank">3.5.2 數值類型之間的轉換  </a>

<a href="https://yq.aliyun.com/articles/82300" target="_blank">3.5.9 枚舉類型  </a>

<a href="https://yq.aliyun.com/articles/82302" target="_blank">3.6 字元串</a>

<a href="https://yq.aliyun.com/articles/82305" target="_blank">3.6.1 子串  </a>

<a href="https://yq.aliyun.com/articles/82306" target="_blank">3.6.2 拼接  </a>

<a href="https://yq.aliyun.com/articles/82318" target="_blank">3.6.6 碼點與代碼單元  </a>

<a href="https://yq.aliyun.com/articles/82329" target="_blank">3.6.8 閱讀聯機api文檔  </a>

<a href="https://yq.aliyun.com/articles/82332" target="_blank">3.6.9 建構字元串  </a>

<a href="https://yq.aliyun.com/articles/82353" target="_blank">3.7.1 讀取輸入</a>

<a href="https://yq.aliyun.com/articles/82356" target="_blank">3.7.2 格式化輸出 </a>

<a href="https://yq.aliyun.com/articles/82370" target="_blank">3.8.4 确定循環  </a>

<a href="https://yq.aliyun.com/articles/82371" target="_blank">3.8.5 多重選擇:switch語句  </a>

<a href="https://yq.aliyun.com/articles/82383" target="_blank">3.10.2 數組初始化以及匿名數組</a>

<a href="https://yq.aliyun.com/articles/82385" target="_blank">3.10.3 數組拷貝 </a>

<a href="https://yq.aliyun.com/articles/82390" target="_blank">3.10.5 數組排序  </a>

<a href="https://yq.aliyun.com/articles/82394" target="_blank">3.10.7 不規則數組 </a>

第4章 對象與類  

4.1 面向對象程式設計概述 

4.1.1 類  

4.1.2 對象  

4.1.3 識别類 

4.1.4 類之間的關系 

4.2 使用預定義類  

4.2.1 對象與對象變量 

4.2.2 java類庫中的localdate類  

4.2.3 更改器方法與通路器方法 

4.3 使用者自定義類  

4.3.1 employee類  

4.3.2 多個源檔案的使用  

4.3.3 剖析employee類  

4.3.4 從構造器開始  

4.3.5 隐式參數與顯式參數  

4.3.6 封裝的優點  

4.3.7 基于類的通路權限  

4.3.8 私有方法  

4.3.9 f?inal執行個體域  

4.4 靜态域與靜态方法  

4.4.1 靜态域  

4.4.2 靜态常量  

4.4.3 靜态方法  

4.4.4 工廠方法  

4.4.5 main方法  

4.5 方法參數  

4.6 對象構造  

4.6.1 重載  

4.6.2 預設域初始化 

4.6.3 無參數的構造器 

4.6.4 顯式域初始化  

4.6.5 參數名  

4.6.6 調用另一個構造器  

4.6.7 初始化塊  

4.6.8 對象析構與finalize方法  

4.7 包  

4.7.1 類的導入  

4.7.2 靜态導入  

4.7.3 将類放入包中  

4.7.4 包作用域  

4.8 類路徑  

4.8.1 設定類路徑

4.9 文檔注釋  

4.9.1 注釋的插入  

4.9.2 類注釋  

4.9.3 方法注釋  

4.9.4 域注釋  

4.9.5 通用注釋  

4.9.6 包與概述注釋  

4.9.7 注釋的抽取  

4.10 類設計技巧  

第5章 繼承  

5.1 類、超類和子類  

5.1.1 定義子類  

5.1.2 覆寫方法  

5.1.3 子類構造器  

5.1.4 繼承層次  

5.1.5 多态  

5.1.6 了解方法調用  

5.1.7 阻止繼承:final類和方法  

5.1.8 強制類型轉換  

5.1.9 抽象類  

5.1.10 受保護通路  

5.2 object:所有類的超類  

5.2.1 equals方法  

5.2.2 相等測試與繼承  

5.2.3 hashcode方法  

5.2.4 tostring方法  

5.3 泛型數組清單  

5.3.1 通路數組清單元素  

5.3.2 類型化與原始數組清單的相容性  

5.4 對象包裝器與自動裝箱  

5.5 參數數量可變的方法 

5.6 枚舉類  

5.7 反射  

5.7.1 class類  

5.7.2 捕獲異常  

5.7.3 利用反射分析類的能力  

5.7.4 在運作時使用反射分析對象  

5.7.5 使用反射編寫泛型數組代碼  

5.7.6 調用任意方法  

5.8 繼承的設計技巧 

第6章 接口、lambda表達式與内部類 

6.1 接口 

6.1.1 接口概念 

6.1.2 接口的特性  

6.1.3 接口與抽象類 

6.1.4 靜态方法 

6.1.5 預設方法  

6.1.6 解決預設方法沖突 

6.2 接口示例 

6.2.1 接口與回調 

6.2.2 comparator接口  

6.2.3 對象克隆  

6.3 lambda表達式  

6.3.1 為什麼引入lambda表達式  

6.3.2 lambda表達式的文法  

6.3.3 函數式接口 

6.3.4 方法引用  

6.3.5 構造器引用  

6.3.6 變量作用域  

6.3.7 處理lambda表達式  

6.3.8 再談comparator  

6.4 内部類 

6.4.1 使用内部類通路對象狀态  

6.4.2 内部類的特殊文法規則 

6.4.3 内部類是否有用、必要和安全 

6.4.4 局部内部類  

6.4.5 由外部方法通路變量 

6.4.6 匿名内部類  

6.4.7 靜态内部類  

6.5 代理 

6.5.1 何時使用代理  

6.5.2 建立代理對象 

6.5.3 代理類的特性  

第7章 異常、斷言和日志  

7.1 處理錯誤  

7.1.1 異常分類  

7.1.2 聲明受查異常  

7.1.3 如何抛出異常  

7.1.4 建立異常類  

7.2 捕獲異常 

7.2.1 捕獲異常 

7.2.2 捕獲多個異常  

7.2.3 再次抛出異常與異常鍊  

7.2.4 f?inally子句  

7.2.5 帶資源的try語句  

7.2.6 分析堆棧軌迹元素 

7.3 使用異常機制的技巧  

7.4 使用斷言  

7.4.1 斷言的概念 

7.4.2 啟用和禁用斷言  

7.4.3 使用斷言完成參數檢查  

7.4.4 為文檔假設使用斷言 

7.5 記錄日志  

7.5.1 基本日志 

7.5.2 進階日志 

7.5.3 修改日志管理器配置  

7.5.4 本地化 

7.5.5 處理器  

7.5.6 過濾器  

7.5.7 格式化器 

7.5.8 日志記錄說明 

7.6 調試技巧 

第8章 泛型程式設計  

8.1 為什麼要使用泛型程式設計  

8.1.1 類型參數的好處 

8.1.2 誰想成為泛型程式員  

8.2 定義簡單泛型類  

8.3 泛型方法 

8.4 類型變量的限定

8.5 泛型代碼和虛拟機  

8.5.1 類型擦除  

8.5.2 翻譯泛型表達式  

8.5.3 翻譯泛型方法  

8.5.4 調用遺留代碼 

8.6 限制與局限性  

8.6.1 不能用基本類型執行個體化類型參數  

8.6.2 運作時類型查詢隻适用于原始類型 

8.6.3 不能建立參數化類型的數組  

8.6.4 varargs警告  

8.6.5 不能執行個體化類型變量 

8.6.6 不能構造泛型數組  

8.6.7 泛型類的靜态上下文中類型變量無效 

8.6.8 不能抛出或捕獲泛型類的執行個體  

8.6.9 可以消除對受查異常的檢查  

8.6.10 注意擦除後的沖突 

8.7 泛型類型的繼承規則  

8.8 通配符類型  

8.8.1 通配符概念 

8.8.2 通配符的超類型限定

8.8.3 無限定通配符  

8.8.4 通配符捕獲 

8.9 反射和泛型  

8.9.1 泛型class類  

8.9.2 使用class&lt;t&gt;參數進行類型比對  

8.9.3 虛拟機中的泛型類型資訊 

第9章 集合

9.1 java集合架構  

9.1.1 将集合的接口與實作分離 

9.1.3 疊代器  

9.1.4 泛型實用方法  

9.1.5 集合架構中的接口  

9.2 具體的集合 

9.2.1 連結清單  

9.2.2 數組清單  

9.2.3 散列集  

9.2.4 樹集  

9.2.5 隊列與雙端隊列  

9.2.6 優先級隊列  

9.3 映射  

9.3.1 基本映射操作  

9.3.2 更新映射項 

9.3.3 映射視圖  

9.3.4 弱散列映射 

9.3.5 連結散列集與映射 

9.3.6 枚舉集與映射  

9.3.7 辨別散列映射  

9.4 視圖與包裝器  

9.4.1 輕量級集合包裝器  

9.4.2 子範圍  

9.4.3 不可修改的視圖  

9.4.4 同步視圖  

9.4.5 受查視圖  

9.4.6 關于可選操作的說明  

9.5 算法  

9.5.1 排序與混排  

9.5.2 二分查找 

9.5.3 簡單算法  

9.5.4 批操作  

9.5.5 集合與數組的轉換  

9.5.6 編寫自己的算法  

9.6 遺留的集合  

9.6.1 hashtable類  

9.6.2 枚舉  

9.6.3 屬性映射  

9.6.4 棧  

9.6.5 位集  

第10章 圖形程式設計  

10.1 swing概述  

10.2 建立架構  

10.3 架構定位  

10.3.1 架構屬性  

10.3.2 确定合适的架構大小  

10.4 在元件中顯示資訊  

10.5 處理2d圖形  

10.6 使用顔色  

10.7 文本使用特殊字型  

10.8 顯示圖像  

第11章 事件處理  

11.1 事件處理基礎  

11.1.1 執行個體:處理按鈕點選事件  

11.1.2 簡潔地指定監聽器  

11.1.3 執行個體:改變觀感

11.1.4 擴充卡類  

11.2 動作  

11.3 滑鼠事件 

11.4 awt事件繼承層次  

11.4.1 語義事件和底層事件

第12章 swing使用者界面元件  

12.1 swing和模型–視圖–控制器設計模式

12.1.1 設計模式

12.1.2 模型–視圖–控制器模式  

12.1.3 swing按鈕的模型–視圖–控制器分析 

12.2 布局管理概述  

12.2.1 邊框布局 

12.2.2 網格布局

12.3 文本輸入  

12.3.1 文本域  

12.3.2 标簽和标簽元件  

12.3.3 密碼域  

12.3.4 文本區  

12.3.5 滾動窗格 

12.4 選擇元件  

12.4.1 複選框  

12.4.2 單選鈕  

12.4.3 邊框  

12.4.4 組合框  

12.4.5 滑動條  

12.5 菜單  

12.5.1 菜單建立  

12.5.2 菜單項中的圖示

12.5.3 複選框和單選鈕菜單項 

12.5.4 彈出菜單 

12.5.5 快捷鍵和加速器 

12.5.6 啟用和禁用菜單項 

12.5.7 工具欄  

12.5.8 工具提示  

12.6 複雜的布局管理  

12.6.1 網格組布局  

12.6.2 組布局  

12.6.3 不使用布局管理器  

12.6.4 定制布局管理器  

12.6.5 周遊順序  

12.7 對話框  

12.7.1 選項對話框  

12.7.2 建立對話框  

12.7.3 資料交換  

12.7.4 檔案對話框  

12.7.5 顔色選擇器 

12.8 gui程式排錯  

12.8.1 調試技巧  

12.8.2 讓awt機器人完成工作  

第13章 部署java應用程式  

13.1 jar檔案  

13.1.1 建立jar檔案  

13.1.2 清單檔案  

13.1.3 可執行jar檔案  

13.1.4 資源  

13.1.5 密封  

13.2 應用首選項的存儲  

13.2.1 屬性映射  

13.2.2 首選項api  

13.3 服務加載器  

13.4 applet  

13.4.1 一個簡單的applet  

13.4.2 applet html标記和屬性  

13.4.3 使用參數向applet傳遞資訊 

13.4.4 通路圖像和音頻檔案  

13.4.5 applet上下文  

13.4.6 applet間通信 

13.4.7 在浏覽器中顯示資訊項 

13.4.8 沙箱

13.4.9 簽名代碼  

13.5 java web start  

13.5.1 釋出java web start應用 

13.5.2 jnlp api 

第14章 并發  

14.1 什麼是線程  

14.1.1 使用線程給其他任務提供機會  

14.2 中斷線程  

14.3 線程狀态  

14.3.1 新建立線程  

14.3.2 可運作線程  

14.3.3 被阻塞線程和等待線程  

14.3.4 被終止的線程

14.4 線程屬性  

14.4.1 線程優先級  

14.4.2 守護線程  

14.4.3 未捕獲異常處理器  

14.5 同步  

14.5.1 競争條件的一個例子  

14.5.2 競争條件詳解  

14.5.3 鎖對象  

14.5.4 條件對象  

14.5.5 synchronized關鍵字  

14.5.6 同步阻塞  

14.5.7 螢幕概念  

14.5.8 volatile域  

14.5.9 f?inal變量  

14.5.10 原子性  

14.5.11 死鎖  

14.5.12 線程局部變量  

14.5.13 鎖測試與逾時  

14.5.14 讀/寫鎖  

14.5.15 為什麼棄用stop和suspend方法  

14.6 阻塞隊列  

14.7 線程安全的集合  

14.7.1 高效的映射、集和隊列  

14.7.2 映射條目的原子更新  

14.7.3 對并發散列映射的批操作  

14.7.4 并發集視圖  

14.7.5 寫數組的拷貝  

14.7.6 并行數組算法  

14.7.7 較早的線程安全集合  

14.8 callable與future  

14.9 執行器  

14.9.1 線程池  

14.9.2 預定執行  

14.9.3 控制任務組  

14.9.4 fork-join架構  

14.9.5 可完成future  

14.10 同步器  

14.10.1 信号量  

14.10.2 倒計時門栓  

14.10.3 障栅  

14.10.4 交換器  

14.10.5 同步隊列  

14.11 線程與swing  

14.11.1 運作耗時的任務  

14.11.2 使用swing工作線程  

14.11.3 單一線程規則  

附錄a java關鍵字