進程與線程的區別------java編程

                                                  進程與線程的區別

     進程與線程之間的聯繫,會因平臺的差異(OS  硬件),有極大的不同。即使在相同的平臺下,進程與線程之間的聯繫也會因爲JAVA 虛擬機的實現方式有很大的不同。不過一般而言,我們可以說,一個進程裏可建立多條線程。

  具體的說,可以有以下兩點特別重要的:

  1.線程之間的內存是共享的。

  這是他們最大的差異。通常每個進程所擁有的內存空間是相互獨立的。進程不能擅自讀取,改寫其他進程的內存空間。正因爲這一點,進程就不必擔心被其他進程破壞的危險。

  而線程則是內存共享的,所以我們通常會讓一個線程在內存上寫入數據,而其他的線程來讀取。

  也因爲這一點,使得線程之間的溝通可以使用很自然,簡單的方式做到。而因爲一個實例可以由多個線程訪問,所以需要正確的進行共享互斥。

  2.線程之間的context-switch較容易。

  要切換執行中的進程,進程必須將自己現有的執行狀態存儲下來。,並將下一個要開始執行的進程以前所保留的context數據讀回來。而這個信息切換的操作需要花費一定的時間。

  切換執行中的線程,線程與進程一樣,需要進行context-switch操作。然而線程所管理的context的信息比進程要來的少,一般而言線程之間的switch比起進程要快很多。

  所以要進行多項緊密相關的工作,線程通常比進程來的實用。

發佈了43 篇原創文章 · 獲贊 10 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章