02.Oracle官方併發教程之進程和線程


在併發編程中,有兩個基本的執行單元:進程和線程。在java語言中,併發編程最關心的是線程,然而,進程也是非常重要的。 即使在只有單一的執行核心的計算機系統中,也有許多活動的進程和線程。因此,在任何給定的時刻,只有一個線程在實際執行。處理器的處理時間是通過操作系統的時間片在進程和線程中共享的。現在具有多處理器或有多個執行內核的多處理器的計算機系統越來越普遍,這大大增強了系統併發執行的進程和線程的吞吐量–但在不沒有多個處理器或執行內核的簡單的系統中,併發任然是可能的。

進程

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

線程

線程有時也被稱爲輕量級的進程。進程和線程都提供了一個執行環境,但創建一個新的線程比創建一個新的進程需要的資源要少。 線程是在進程中存在的 — 每個進程最少有一個線程。線程共享進程的資源,包括內存和打開的文件。這樣提高了效率,但潛在的問題就是線程間的通信。多線程的執行是Java平臺的一個基本特徵。每個應用都至少有一個線程 – 或幾個,如果算上“系統”線程的話,比如內存管理和信號處理等。但是從程序員的角度來看,啓動的只有一個線程,叫主線程。這個線程有能力創建額外的線程,我們將在下一節演示。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章