兩者區別:
1.資源擁有:進程是資源分配的最小單位,線程是CPU調度的最小單位,同一個進程中的線程共享本進程中的資源(如內存、CPU、IO等),進程間資源獨立
2.地址空間:同一個進程的線程共享本進程的地址空間,而進程之間則是獨立的地址空間
3.執行方面:進程可以看做一個獨立應用來單獨執行,而線程則必須依託與進程執行
4.系統開銷:進程切換消耗資源更多、開銷更大(用戶態與內核態的切換)
在JAVA中的聯繫:
運行一個普通程序產生一個進程,進程中會自動創建一個主線程
一個進程對應一個JVM實例,多個線程共享JVM中的堆內存空間
主線程可以創建子線程,一般會後於子線程完成執行(但是可以通過sleep或者join方法讓子線程先於父線程完成)