關於Java中進程和線程的區別

什麼是進程?

進程:是併發執行的程序在執行過程中分配和管理資源的基本單位,競爭計算機系統資源的基本單位。

什麼是線程?

線程:是進程的一個執行單元,是進程內科調度實體。比進程更小的獨立運行的基本單位。線程也被稱爲輕量級進程。

一個程序由一個或多個進程組成,一個進程由一個或多個線程組成。

例如:

對於java程序來說,當在DOS命令窗口輸入:java HelloWorld 回車之後,會先啓動JVM,而JVM就是一個進程,JVM再啓動一個主線程調用main方法。 同時再啓動一個垃圾回收線程負責看護,回收垃圾,最起碼,現在的java程序中至少有兩個線程併發,一個是垃圾回收線程,一個是執行main方法的主線程。

進程和線程的區別

1.地址空間:

進程之間是獨立的地址空間,但同一進程的線程共享本進程的地址空間。

2.資源佔用

同一進程內的線程共享本進程的資源如內存、I/O、cpu等,但是進程之間的資源是獨立的。

3.健壯性

一個進程崩潰後,在保護模式下不會對其他進程產生影響;

一個線程崩潰整個進程都死掉,所以多進程要比多線程健壯。

4.執行過程

進程可以獨立執行,且每個獨立的進程程有一個程序運行的入口、順序執行序列和程序入口。

線程不能獨立執行,必須存在應用程序中,由應用程序提供多個線程執行控制。線程是處理器調度的基本單位,但是進程不是。

5.併發和資源消耗

兩者均可併發執行。

進程切換時,消耗的資源大,效率高。所以涉及到頻繁的切換時,使用線程要好於進程。

如果要求同時進行並且又要共享某些變量的併發操作,只能用線程不能用進程

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章