多執行緒學習 簡單了解下

2022-08-05 06:51:13 字數 1059 閱讀 5346

簡單了解下多工相關

多工不管是單核還是多核cpu,一單任務數量超過核數,os都會把每個任務輪流排程到每個核心上,os實現多執行緒和多程序往往都是通過時間片的形式執行的,即:每個任務(程序/執行緒)輪流執行,因為時間片切分的很小,以至於我們感覺多個任務在同時執行。

實現多工方式:多程序模式,多執行緒模式,多程序+多執行緒模式

程序是資源分配的最小單位,執行緒是cpu排程的最小單位,每個程序至少含有乙個執行緒,如何排程程序和執行緒,完全由作業系統決定,程式不能自己決定什麼時候執行,執行多久時間

多執行緒乙個程序內可以有多個執行緒(至少乙個執行緒),多個執行緒共享程序的所有變數,同時對全域性變數進行訪問和改寫容易出現混亂,所以需要用鎖進行執行緒的同步控制。

多執行緒的目的:最大限度的利用cpu資源。

處理器的個數決定了同一時刻同時執行的最大執行緒數,如單核cpu某一時刻只能有乙個執行緒在執行(微觀序列),雙核的cpu可以最多同時執行兩個執行緒,可以做到微觀並行。

多程序:

乙個程序內有乙個預設執行緒,開多個程序處理不同的任務,每個程序有自己獨立的記憶體空間,不共享物件,同步簡單,但是開銷較大。

簡單對比下:

對比維度

多程序多執行緒

總結資料共享,同步

資料共享複雜,需要ipc(程序間通訊)

資料是隔離的,同步簡單

共享程序資料,共享簡單

同步複雜

各有優劣勢,

視應用場景而定

記憶體,cpu

占用記憶體多,切換複雜,

cpu利用率低

占用記憶體少,切換簡單,

cpu利用率高

執行緒佔優

建立銷毀,切換

建立銷毀,切換複雜,速度慢

建立銷毀,切換簡單,速度快

執行緒佔優

程式設計除錯

程式設計簡單,除錯簡單

程式設計複雜,除錯複雜

程序佔優

可靠性程序間不會互相影響

乙個執行緒掛掉,會導致整個程序掛掉

程序佔優

分布式是應於多核,多機分布式,

一台機器不夠,擴充套件較簡單

適應於多核分布式

程序佔優

多執行緒簡單了解

1 執行緒的實現方法 實現runable介面 繼承theradl類 實現callable介面 這玩意有返回值 futuretask 物件的get 方法獲取返回值 2 synchronized的用法 修飾乙個 塊,被修飾的 塊稱為同步 塊,其鎖可以進行自定義物件或類.修飾乙個方法,被修飾的方法稱為同步...

vue學習起步 了解下

有這麼一句話,vue是漸進式框架。抽取 漸進式框架 和 自底向上增量開發的設計 這兩個概念是什麼?中的解釋 漸進式代表的含義是 主張 主張指使用時的硬性要求 最少。來個對比就知道什麼叫主張最少 比如說,angular,它兩個版本都是強主張的,如果你用它,必須接受以下東西 在生活中含義是為了保證各施工...

mysql查詢快取簡單了解下唄

在解析乙個查詢語句前,如果查詢快取是開啟的,那麼mysql會檢查這個查詢語句是否命中查詢快取中的資料。如果當前查詢恰好命中查詢快取,在檢查一次使用者許可權後直接返回快取中的結果。這種情況下,查詢不會被解析,也不會生成執行計畫,更不會執行。mysql將快取存放在乙個引用表 不要理解成table,可以認...