線程、進程學習筆記

1.線程:
在同一個進程內又可以執行多個任務,而這每一個任務我就可以看出是一個線程。
線程:是程序的執行單元,執行路徑。是程序使用CPU的最基本單位。

單線程:如果程序只有一條執行路徑

多線程:如果程序有多條執行路徑

2.多線程有什麼意義呢?

多線程的存在不是提高程序執行速度,而是爲了提高應用程序的使用率。
程序的執行其實就是在搶佔CPU的資源,CPU的執行權。
多個進程是在搶這個資源,而其中某一個進程執行的路徑比較多,就會有更高的機率搶到CPU的執行權。線程的執行有隨機性。

(1)在Android APP中,只允許有一個主線程,進行UI的渲染等等,但是不能進行耗時操作(網絡交互等等),否則會造成ANR,就是線程阻塞卡死,未響應。
(2)除了主線程之外,耗時操作都應該規範到子線程中,線程之間會有相應的通信方式,但相互獨立。

3.進程:
就是正在運行的程序。
是系統進行資源分配和調用的獨立單位。每一個進程都有他的內存空間和系統資源。
4.多進程有什麼意義呢?
單進程的計算機只能做件事情,而我們現在的計算機都可以做多件事情。
舉例:一邊看電影(電影進程),一邊聽音樂(音樂進程)。
現在的計算機都是支持多線程的,可以在一個時間內執行多個任務。
並且,可以提高CPU的使用率
5.並行與併發
並行:是邏輯上同時發生,指在某一個時間內同時運行多個程序
併發:是物理上同時發生,指在某一個時間內同時運行多個程序

6.進程與線程的區別是:

1)、子進程和父進程有不同的代碼和數據空間,而多個線程則共享數據空間,每個線程有自己的執行堆棧和程序計數器爲其執行上下文。
2)、進程間相互獨立,同一進程的各線程間共享。某進程內的線程在其它進程不可見。
3)、進程間通信IPC,線程間可以直接讀寫進程數據段(如全局變量)來進行通信——需要進程同步和互斥手段的輔助,以保證數據的一致性。
4)、線程上下文切換比進程上下文切換要快得多。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章