1. 程式人生 > >Oracle官方併發教程之程序和執行緒

Oracle官方併發教程之程序和執行緒

原文連結譯文連結,譯者:bjsuo,校對:鄭旭東

在併發程式設計中,有兩個基本的執行單元:程序和執行緒。在java語言中,併發程式設計最關心的是執行緒,然而,程序也是非常重要的。

即使在只有單一的執行核心的計算機系統中,也有許多活動的程序和執行緒。因此,在任何給定的時刻,只有一個執行緒在實際執行。處理器的處理時間是通過作業系統的時間片在程序和執行緒中共享的。
現在具有多處理器或有多個執行核心的多處理器的計算機系統越來越普遍,這大大增強了系統併發執行的程序和執行緒的吞吐量–但在不沒有多個處理器或執行核心的簡單的系統中,併發任然是可能的。

程序

程序具有一個獨立的執行環境。通常情況下,程序擁有一個完整的、私有的基本執行資源集合。特別地,每個程序都有自己的記憶體空間。
程序往往被看作是程式或應用的代名詞,然而,使用者看到的一個單獨的應用程式實際上可能是一組相互協作的程序集合。為了便於程序之間的通訊,大多數作業系統都支援程序間通訊(IPC),如pipes 和sockets。IPC不僅支援同一系統上的通訊,也支援不同的系統。
Java虛擬機器的大多數實現是單程序的。Java應用可以使用的ProcessBuilder物件建立額外的程序,多程序應用超出了本課的範圍。

執行緒

執行緒有時也被稱為輕量級的程序。程序和執行緒都提供了一個執行環境,但建立一個新的執行緒比建立一個新的程序需要的資源要少。
執行緒是在程序中存在的 — 每個程序最少有一個執行緒。執行緒共享程序的資源,包括記憶體和開啟的檔案。這樣提高了效率,但潛在的問題就是執行緒間的通訊。
多執行緒的執行是Java平臺的一個基本特徵。每個應用都至少有一個執行緒 – 或幾個,如果算上“系統”執行緒的話,比如記憶體管理和訊號處理等。但是從程式設計師的角度來看,啟動的只有一個執行緒,叫主執行緒。這個執行緒有能力建立額外的執行緒,我們將在下一節演示。