「java」線程 & 進程

這裏來區分一下線程和進程

進程:

  • 每個進程都有獨立的代碼和數據空間(進程上下文)
  • 進程間的切換會有較大的開銷
  • 一個進程包含1--n個線程。
  • 進程是資源分配的最小單位

 

線程:

  • 同一類線程共享代碼和數據空間(因爲多線程組成進程,如果進程是資源分配的最小單位,那麼線程之間彼此共享資源就很好理解)
  • 每個線程有獨立的運行棧和程序計數器(PC)
  • 線程切換開銷小。
  • 線程是cpu調度的最小單位(衆所周知,線程在start後,不一定那是run,什麼時候run取決於系統的調用)

 

  線程和進程一樣分爲五個階段:創建、就緒、運行、阻塞、終止。

  多進程是指操作系統能同時運行多個任務(程序)。多線程是指在同一程序中有多個順序流在執行。

 

例子:

下面是我類比兩個概念和生活中的實例,進行的舉例,歡迎指出錯誤!!

進程可以想象成做一件事。比如有一個項目組,現在有兩個項目要開發(一個online store的網站、一個教育評估系統)

開發網站或者開發系統是兩件單獨獨立的事情,把整個項目組想象成計算機的話,那麼這兩件事就可以看成是要執行的兩個進程。

在online store的網站中, 肯定有很多的個模塊需要被開發,比如登錄功能和搜索功能。所以開發登錄功能就是可以看成是一個線程。而如果現在項目經理只分配了一個開發人員來開發這 兩個功能,那麼這個開發人員就是這兩個線程的共享資源。

 

參考:https://www.cnblogs.com/yjd_hycf_space/p/7526608.html

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