Java™ 教程(程式和執行緒)

博弈發表於2019-01-19

併發

計算機使用者想當然地認為他們的系統一次可以做不止一件事,他們設想他們可以繼續在文書處理器中工作,而其他應用程式則下載檔案、管理列印佇列和流音訊,即使是單個應用程式通常也希望一次完成多個任務。例如,流式音訊應用程式必須同時從網路上讀取數字音訊、解壓縮、管理回放並更新其顯示,甚至文書處理器應始終準備好響應鍵盤和滑鼠事件,無論重新格式化文字或更新顯示有多繁忙,可以執行此類操作的軟體稱為併發軟體。

Java平臺的設計初衷是為了支援併發程式設計,在Java程式語言和Java類庫中提供基本的併發支援,從5.0版開始,Java平臺還包含高階併發API,本課程介紹了平臺的基本併發支援,並總結了java.util.concurrent包中的一些高階API。

程式和執行緒

在併發程式設計中,有兩個基本的執行單元:程式和執行緒,在Java程式語言中,併發程式設計主要涉及執行緒,但是,程式也很重要。

計算機系統通常具有許多活動程式和執行緒,即使在只有單個執行核心的系統中也是如此,因此在任何給定時刻只有一個執行緒實際執行,單個核心的處理時間通過稱為時間切片的OS功能在程式和執行緒之間共享。

對於具有多個處理器或具有多個執行核心的處理器的計算機系統變得越來越普遍,這極大地增強了系統併發執行程式和執行緒的能力 — 但即使在沒有多個處理器或執行核心的簡單系統上,併發也是可能的。

程式

程式具有獨立的執行環境,程式通常具有完整的私有基本執行時資源集,特別是,每個程式都有自己的記憶體空間。

程式通常被視為程式或應用程式的同義詞,但是,使用者看作的單個應用程式實際上可能是一組協作程式,為了促進程式之間的通訊,大多數作業系統都支援程式間通訊(IPC)資源,例如管道和socket,IPC不僅用於同一系統上的程式之間的通訊,還用於不同系統上的程式。

Java虛擬機器的大多數實現都作為單個程式執行,Java應用程式可以使用ProcessBuilder物件建立額外程式,多程式應用程式超出了本課程的範圍。

執行緒

執行緒有時被稱為輕量級程式,程式和執行緒都提供執行環境,但建立新執行緒所需的資源比建立新程式要少。

執行緒存在於程式中 — 每個程式至少有一個執行緒,執行緒共享程式的資源,包括記憶體和開啟檔案,這使高效但可能有問題的通訊。

多執行緒執行是Java平臺的基本特性,每個應用程式至少有一個執行緒 — 或幾個,如果你計算執行記憶體管理和訊號處理等任務的“系統”執行緒的話。但是從應用程式設計師的角度來看,你只從一個執行緒開始,稱為主執行緒,該執行緒具有建立額外執行緒的能力,我們將在下一節中進行演示。


下一篇:Thread物件

相關文章