Java多線程 我們先來瞭解兩個概念!!!! 1.什麼是併發與並行 2.什麼是進程與線程 1.什麼是併發與並行 1.1並行:兩個事情在同一時刻發生 1.2併發:兩個事情在同一時間段內發生 併發與並行的區別: 1.並行是指兩個或者多個事件在同一時刻發生;而併發是指兩個或多個事件在同一時間間隔發生。 2 ...
Java多線程
我們先來瞭解兩個概念!!!!
1.什麼是併發與並行
2.什麼是進程與線程
1.什麼是併發與並行
1.1並行:兩個事情在同一時刻發生
1.2併發:兩個事情在同一時間段內發生
併發與並行的區別:
1.並行是指兩個或者多個事件在同一時刻發生;而併發是指兩個或多個事件在同一時間間隔發生。
2.並行是不同實體上的多個事件,併發是多個實體的不同事件
3.並行是多個處理器同時處理多個任務,併發是一個處理器“同時“處理多個任務
併發的同時是指巨集觀上的同時:
在同一時刻只能有一條指令執行,但多個進程指令被快速的輪換執行,使得在巨集觀上具有多個進程同時執行的效果,但在微觀上並不是同時執行的,只是把時間分成若幹段,使多個進程快速交替的執行。
小科普
而在多個 CPU 系統中,則這些可以併發執行的程式便可以分配到多個處理器上(CPU),實現多任務並行執行, 即利用每個處理器來處理一個可以併發執行的程式,這樣多個程式便可以同時執行。目前電腦市場上說的多核 CPU,便是多核處理器,核 越多,並行處理的程式越多,能大大的提高電腦運行的效率。
什麼是進程與線程
進程:數值一個記憶體中的應用程式,每個進程都有一個獨立的存儲空間,一個應用程式可以同時運行多個進程,進程是程式的一次執行過程,是系統運行的基本單位,系統運行一個程式是一個進程從創建運行到消亡的過程
打開任務管理器就可以看到電腦上運行的進程
線程:線程是進程的一個執行單元,負責當前進程中程式的執行,一個進程可以有多個線程多個線程的程式被稱為多線程程式
這些就是一個個進程
線程調度
分時調度
所有線程輪流使用cpu的使用權,平均分配每個線程占用cpu的時間
搶占式調度
搶先讓優先順序高的線程使用cpu,如果線程優先順序相同,那麼會隨機選擇一個執行,java使用搶占式調度
設置線程的優先順序
搶占式調度的好處
大部分操作系統都支持多進程併發運行,現在的操作系統都支持同時運行多個程式比如我們可以在打lol的時候同時聽歌
實際上cpu使用搶占式調度模式在多個線程之間進行高速的切換,對於cpu的一個核而言,某個時刻只能執行一個線程,而cpu在多個線程之間切換速度很快看上去像在同一時刻運行,多線程不能提高程式的運行速度,但是可以提高程式的運行效率,讓cpu的使用效率更高
這是學習java多線程前需要瞭解的一些基礎知識,我下一篇文章會來簡述java多線程的使用
如有錯誤還請各位批評指正