併發
併發(交替執行):兩個或多個事件在同一個時間段內發生,CPU在不一樣的事件中來回切換,宏觀上像是同時執行,微觀上是交替執行。多線程
並行
並行(同時執行):兩個或多個事件在同一刻發生,是真正的同時執行。例:有兩個CPU,那麼就是一個CPU處理一個事件,實現兩個事件同時被CPU執行。併發
進程
- 由硬盤進入到內存中的程序叫作進程:好比「卡巴斯基殺毒軟件」的啓動就是從硬盤加載到了內存中,此時就稱爲進程,可在任務管理器中查看全部的進程。
- 一個應用程序能夠同時運行多個進程,每一個進程都有一個獨立的內存空間。
- 進程是系統運行程序的基本單位,也是程序的一次執行過程。
- 系統運行一個程序便是一個進程從建立、運行到消亡的過程。
線程
- 應用程序通向CPU的路徑,CPU經過這個路徑就能夠執行對應的功能,而這條路徑被稱爲線程,例:點擊「卡巴斯基的病毒查殺」功能時,就開闢了一條通向CPU的路徑,此時CPU就經過該路徑能夠執行「病毒查殺」功能。
- 線程是進程中的一個執行單元,負責當前進程中程序的執行。
- 一個進程中至少有一個線程,擁有多個線程的應用程序被稱爲多線程程序。
進程和線程的區別
- 進程:有獨立的內存空間,進程中數據存放的位置(堆空間和棧空間)是獨立的,而且進程至少有一個線程。
- 線程:棧空間是獨立的,堆空間是共享的;且線程消耗的資源比進程少不少。
線程調度:
- 分時調度:全部線程輪流得到CPU的使用權而且使用CPU,平均分配每一個線程佔用CPU的時間。
- 搶佔式調度:讓優先級高的線程優先使用CPU,當優先級相同時,隨機選擇一個線程使用CPU(線程隨機性),Java中使用的就是「搶佔式調度」。
PS:線程
- 文章來自各類資源的整理,若有侵權請告知刪除。
- 轉載本文請註明出處