筆記分享:進程與線程的關係

圖片均來源於網絡

進程和線程的由來

  • 串行:初期的計算機智能串行執行任務,並且需要長時間等待用戶輸入
  • 批處理:預先將用戶的指令集中成清單,批量串行處理用戶指令,仍然無法併發執行
  • 進程:進程獨佔內存空間,保存各自運行狀態,相互間不干擾可以互相切換,爲併發處理任務提供了可能
  • 線程:共享進程的內存資源,相互間切換更快速,支持更細粒度的任務控制,使進程內的子任務得以併發執行

 

進程和線程的區別

  • 進程是資源分配的最小單位,線程是CPU調度的最小單位
  • 所有與進程相關的資源,都被記錄在PCB中
  • 線程只由堆棧寄存器、程序計數器和TCB組成
  • 總結:
    • 線程不能看做獨立應用,而進程可看做獨立應用。
    • 進程有獨立的地址空間,相互不影響,線程只是進程的不同執行路徑。
    • 線程沒有獨立的地址空間,多進程的程序比多線程程序健壯
    • 進程的切換比線程的切換開銷大

 

Java進程和線程的關係

  • Java對操作系統提供的功能進行封裝,包括進程和線程
  • 運行一個程序會產生一個進程,進程包含至少一個線程
  • 每個進程對應一個JVM實例,多個線程共享JVM的堆
  • Java採用單線程編程模型,程序會自動創建主線程
  • 主線程可以創建子線程,原則上要後於子線程完成執行
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章