線程與進程的主要區別是:(同一進程中的)線程在共享的記憶體空間中運行,而進程在不同的記憶體空間中運行;線程使用wait(),notify(),notifyAll()等方法直接與其他執行緒(同一進程)通信,而進程需要使用「IPC」來與其他進程通訊。
什麼是進程?
正在運行中的應用程序,通常稱為進程。每個行程都有自己獨立的位址空間(記憶體空間),每當使用者啟動一個行程時,作業系統就會為該行程分配一個獨立的記憶體空間,讓應用程式在這個獨立的記憶體空間中運作。
什麼是執行緒?
執行緒是一個輕量級的子程序,是最小的處理單元;是一個單獨的執行路徑。可以說:線程是進程的子集(部分)。
線程是獨立的。如果在一個執行緒中發生異常,則不會影響其他執行緒。它使用共享記憶體區域。
進程和執行緒的關係:
#如上圖所示,作業系統中可以擁有更多個行程,一個行程裡可以擁有多個執行緒,執行緒在進程內執行。
進程和執行緒的差異:
1、容易建立新執行緒。但是,建立新進程需要重複父進程。
2、執行緒可以控制同一行程的其他執行緒。進程無法控制兄弟進程,只能控制其子進程。
3、進程擁有自己的記憶體空間。執行緒使用行程的記憶體空間,並且要和該行程的其他執行緒共享這個空間;而不是在行程中給每個執行緒單獨劃分一點空間。
4、(同一進程中的)執行緒在共享記憶體空間中運行,而進程在不同的記憶體空間中運行。
5、執行緒可以使用wait(),notify(),notifyAll()等方法直接與其他執行緒(同一進程)通訊;而,進程需要使用「進程間通訊」(IPC)來與操作系統中的其他進程通訊。
說明:
IPC,即進程間通信,特別指作業系統提供的允許進程管理共享資料的一種機制。
總結:以上就是這篇文章的全部內容,希望能對大家的學習有所幫助。
以上是java中執行緒與進程的差別是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!