[Java]進程與線程的區別(轉)

        線程是指進程內的一個執行單元,也是進程內的可調度實體. 與進程的區別:web

(1)地址空間:進程內的一個執行單元;進程至少有一個線程;它們共享進程的地址空間;而進程有本身獨立的地址空間;多線程

(2)資源擁有:進程是資源分配和擁有的單位,同一個進程內的線程共享進程的資源併發

(3)線程是處理器調度的基本單位,但進程不是.spa

(4)兩者都可併發執行.操作系統

 

     進程和線程都是由操做系統所體會的程序運行的基本單元,系統利用該基本單元實現系統對應用的併發性。進程和線程的區別在於:線程

簡而言之,一個程序至少有一個進程,一個進程至少有一個線程.  線程的劃分尺度小於進程,使得多線程程序的併發性高。 orm

另外,進程在執行過程當中擁有獨立的內存單元,而多個線程共享內存,從而極大地提升了程序的運行效率。 進程

線程在執行過程當中與進程仍是有區別的。每一個獨立的線程有一個程序運行的入口、順序執行序列和程序的出口。內存

可是線程不可以獨立執行,必須依存在應用程序中,由應用程序提供多個線程執行控制。ci

從邏輯角度來看,多線程的意義在於一個應用程序中,有多個執行部分能夠同時執行。

但操做系統並無將多個線程看作多個獨立的應用,來實現進程的調度和管理以及資源分配。這就是進程和線程的重要區別。

 

進程是具備必定獨立功能的程序關於某個數據集合上的一次運行活動,進程是系統進行資源分配和調度的一個獨立單位. 

線程是進程的一個實體,是CPU調度和分派的基本單位,它是比進程更小的能獨立運行的基本單位.線程本身基本上不擁有系統資源,只擁有一點在運行中必不可少的資源(如程序計數器,一組寄存器和棧),可是它可與同屬一個進程的其餘的線程共享進程所擁有的所有資源. 一個線程能夠建立和撤銷另外一個線程;同一個進程中的多個線程之間能夠併發執行.

相關文章
相關標籤/搜索