1. 程式人生 > >javaAPI_多執行緒基礎_多執行緒的引入

javaAPI_多執行緒基礎_多執行緒的引入


多執行緒基礎知識1_多執行緒的引入

1:要想了解多執行緒,必須先了解執行緒,而要想了解執行緒,必須先了解程序,因為執行緒是依賴於程序而存在。

2:什麼是程序?
通過工作管理員我們就看到了程序的存在。
而通過觀察,我們發現只有執行的程式才會出現程序。
程序:就是正在執行的程式。
程序是系統進行資源分配和呼叫的獨立單位。每一個程序都有它自己的記憶體空間和系統資源。

3:多程序有什麼意義呢?
單程序的計算機只能做一件事情,而我們現在的計算機都可以做多件事情。
舉例:一邊玩遊戲(遊戲程序),一邊聽音樂(音樂程序)。
也就是說現在的計算機都是支援多程序的,可以在一個時間段內執行多個任務。
並且呢,可以提高CPU的使用率。

問題:
一邊玩遊戲,一邊聽音樂是同時進行的嗎?
不是。因為單CPU在某一個時間點上只能做一件事情。
而我們在玩遊戲,或者聽音樂的時候,是CPU在做著程式間的高效切換讓我們覺得是同時進行的。

4:什麼是執行緒呢?
在同一個程序內又可以執行多個任務,而這每一個任務我就可以看出是一個執行緒。
執行緒:是程式的執行單元,執行路徑。是程式使用CPU的最基本單位。
單執行緒:如果程式只有一條執行路徑。
多執行緒:如果程式有多條執行路徑。

5:多執行緒有什麼意義呢?
多執行緒的存在,不是提高程式的執行速度。其實是為了提高應用程式的使用率。
程式的執行其實都是在搶CPU的資源,CPU的執行權。
多個程序是在搶這個資源,而其中的某一個程序如果執行路徑比較多,就會有更高的機率搶到CPU的執行權。
我們是不敢保證哪一個執行緒能夠在哪個時刻搶到,所以執行緒的執行有隨機性。


6.併發和並行的區別
並行:前者是邏輯上同時發生,指在某一個時間內同時執行多個程式。
併發:後者是物理上同時發生,指在某一個時間點同時執行多個程式。
那麼,我們能不能實現真正意義上的併發呢,是可以的,多個CPU就可以實現,不過你得知道如何排程和控制它們。


7.java程式的執行原理
由java命令啟動jvm,jvm的啟動就相當於是啟動了一個程序。
接著由該程序建立了一個主執行緒去呼叫main()方法。


8.jvm虛擬機器的啟動是單執行緒還是多執行緒?
是多執行緒的。
原因是用於來及回收的執行緒也是需要先啟動的。否則就很容易造成記憶體溢位。
那就是說至少有倆個執行緒已經啟動,一個是主執行緒,一個是垃圾回收執行緒。