什麼是進程?
進程:是併發執行的程序在執行過程中分配和管理資源的基本單位,競爭計算機系統資源的基本單位。
什麼是線程?
線程:是進程的一個執行單元,是進程內科調度實體。比進程更小的獨立運行的基本單位。線程也被稱爲輕量級進程。
一個程序由一個或多個進程組成,一個進程由一個或多個線程組成。
例如:
對於java程序來說,當在DOS命令窗口輸入:java HelloWorld 回車之後,會先啓動JVM,而JVM就是一個進程,JVM再啓動一個主線程調用main方法。 同時再啓動一個垃圾回收線程負責看護,回收垃圾,最起碼,現在的java程序中至少有兩個線程併發,一個是垃圾回收線程,一個是執行main方法的主線程。
進程和線程的區別
1.地址空間:
進程之間是獨立的地址空間,但同一進程的線程共享本進程的地址空間。
2.資源佔用
同一進程內的線程共享本進程的資源如內存、I/O、cpu等,但是進程之間的資源是獨立的。
3.健壯性
一個進程崩潰後,在保護模式下不會對其他進程產生影響;
一個線程崩潰整個進程都死掉,所以多進程要比多線程健壯。
4.執行過程
進程可以獨立執行,且每個獨立的進程程有一個程序運行的入口、順序執行序列和程序入口。
線程不能獨立執行,必須存在應用程序中,由應用程序提供多個線程執行控制。線程是處理器調度的基本單位,但是進程不是。
5.併發和資源消耗
兩者均可併發執行。
進程切換時,消耗的資源大,效率高。所以涉及到頻繁的切換時,使用線程要好於進程。
如果要求同時進行並且又要共享某些變量的併發操作,只能用線程不能用進程