前言:通過學習javaEE初階中的多線程章節后加上我自己的理解,想來總結一下線程和進程的聯系和區別.
一來是能更好地復習知識,二來是為了記錄我的學習路程,相信未來的我回首不會忘記這段難忘的經歷.
1.進程
先來談談進程:進程是操作系統中資源分配的基本單位.
1)進程的執行方式有兩種:并行和并發,二者同時存在
2)進程的狀態最關鍵的兩個:就緒狀態和阻塞狀態.
? ? 就緒狀態:進程隨時可調度到CPU上執行
? ?阻塞狀態:進程暫時無法調度到CPU上執行
2.線程:
再談線程:線程是操作系統調度執行的基本單位.
3.進程和線程的聯系:
3.1線程也叫"輕量級進程"
- 進程是線程的容器:一個進程至少含 1 個主線程,可創建多個子線程。
- 共享資源:同一進程內的線程共享內存、文件句柄等資源,通信成本低。
- 協同工作:進程通過多線程實現內部并行(如瀏覽器用不同線程渲染和加載網絡)。
4.進程和線程的區別:
??
維度 | 進程 | 線程 |
---|---|---|
定義 | 操作系統分配資源的基本單位 | 進程內的執行單元,CPU 調度基本單位 |
資源分配 | 獨立地址空間、文件句柄等 | 共享進程資源,僅獨立棧和寄存器 |
切換開銷 | 高(涉及內存管理等大量資源) | 低(僅少量寄存器和棧數據) |
獨立性 | 進程間隔離,崩潰不影響其他進程 | 共享資源,線程崩潰可能導致進程崩潰 |
適用場景 | 強隔離任務(如獨立程序運行) | 同程序內協作任務(如多任務處理) |