一、定義
進程是具有一定獨立功能的程式關於某個資料集合上的一次運行活動,進程是系統進行資源分配和調度的一個獨立單位。
執行緒是進程的一個實體,是CPU調度和分派的基本單位,它是比行程更小的能獨立運作的基本單位。執行緒本身基本上不擁有系統資源,只擁有一點在運行中必不可少的資源(如程序計數器,一組寄存器和棧),但是它可與同屬一個進程的其他的線程共享進程所擁有的全部資源。
二、關係
一個執行緒可以建立和撤銷另一個執行緒;同一個行程中的多個執行緒之間可以並發執行。
相對進程而言,執行緒是一個更接近執行體的概念,它可以與同進程中的其他執行緒共享數據,但擁有自己的堆疊空間,擁有獨立的執行序列。
線上影片教學推薦:java影片教學
三、區別
行程與執行緒的主要差異在於它們是不同的作業系統資源管理方式。
進程有獨立的位址空間,一個進程崩潰後,在保護模式下不會對其它進程產生影響,而執行緒只是一個進程中的不同執行路徑。
執行緒有自己的堆疊和局部變量,但執行緒之間沒有單獨的位址空間,一個執行緒死掉就等於整個行程死掉,所以多行程的程式要比多執行緒的程式健壯,但在進程切換時,耗費資源較大,效率差一些。但對於一些要求同時進行並且要共享某些變數的並發操作,只能用線程,不能用進程。
1) 簡而言之,一個程式至少有一個行程,一個行程至少有一個執行緒。
2) 執行緒的分割尺度小於進程,使得多執行緒程式的並發性高。
3) 另外,進程在執行過程中擁有獨立的記憶體單元,而多個執行緒共享內存,從而大大提高了程式的運作效率。
4) 執行緒在執行過程中與進程還是有區別的。每個獨立的執行緒都有一個程式運行的入口、順序執行序列和程式的出口。但是執行緒不能夠獨立執行,必須依存在應用程式中,由應用程式提供多個執行緒執行控制。
5) 從邏輯角度來看,多執行緒的意義在於一個應用程式中,有多個執行部分可以同時執行。但作業系統並沒有將多個執行緒看做多個獨立的應用,來實現進程的調度和管理以及資源分配。這就是進程和執行緒的重要區別。
相關文章教學推薦:java入門學習
#以上是java中的執行緒與進程的區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!