什麼是進程,什麼是執行緒? (建議學習:java課程 )
流程:是同時執行的程式在執行過程中分配與管理資源的基本單位,是動態概念,競爭電腦系統資源的基本單位。
執行緒:是進程的一個執行單元,是進程內科調度實體。比進程更小的獨立運作的基本單位。執行緒也被稱為輕量級進程。
一個程式至少一個行程,一個行程至少一個執行緒。
進程執行緒的差異
1、位址空間:同一行程的執行緒共享本進程的位址空間,而進程之間則是獨立的位址空間。
2、資源擁有:同一進程內的執行緒共享本進程的資源,但是進程之間的資源是獨立的。
3、一個行程崩潰後,在保護模式下不會對其他行程產生影響,但是一個執行緒崩潰整個行程都死掉。所以多進程要比多執行緒健壯。
4、行程切換時,消耗的資源大,效率高。所以涉及頻繁的切換時,使用執行緒要好於進程。同樣如果要求同時進行並且又要共享某些變數的並發操作,只能用執行緒不能用進程。
5、執行過程:每個獨立的進程程都有一個程式運行的入口、順序執行序列和程式入口。但是執行緒不能獨立執行,必須依存在應用程式中,由應用程式提供多個執行緒執行控制。
6、執行緒是處理器調度的基本單位,但是行程不是。
7、兩者皆可並發執行。
一個執行緒只屬於一個行程,但是一個行程可以擁有多個執行緒,但至少一個執行緒
資源分配個行程,同一行程中所有執行緒共享該行程的所有資源。
優缺點:
執行緒執行開銷小,但是不利於資源的管理和保護。執行緒適合在SMP機器(雙CPU系統)上運作。
進程執行開銷大,但是能夠很好的進行資源管理和保護。進程可以跨機器前移。
以上是java執行緒與行程的區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!