中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

掌握系列之并發編程-1.并發基礎

發布時間:2020-06-26 17:02:06 來源:網絡 閱讀:427 作者:學習Lr 欄目:編程語言

掌握高并發、高可用架構

第二課 并發編程

從本課開始學習并發編程的內容。主要介紹并發編程的基礎知識、鎖、內存模型、線程池、各種并發容器的使用。

第一節 并發基礎

并發編程 并發基礎 進程 線程 線程通信

系統、包括操作系統的運行是以CPU為核心的,各種數據操作都是在CPU中進行的。所以要學習并發編程,必須要搞清楚和CPU的關系。

CPU簡介

經常說CPU是4核8線程的,這個的意思是4個物理核心,每個物理核心虛擬出2個虛擬核心,也就是8個虛擬核心每個虛擬核心在一個時刻只能運行一個線程。

進程和線程

進程的定義:程序被載入內存并開始準備執行,它就是一個進程,也就是說進程是執行中的程序代碼。進程是資源分配和程序調度運行的基本單位。

線程的定義:單個進程中執行每個任務就是一個線程。線程是進程中執行運算的最小單位。

一個線程只能屬于一個進程,一個進程可以擁有多個線程。多線程處理就是允許一個進程中在同一時刻執行多個任務(線程)。

對比 進程 線程
定義 進程是程序實體的運行過程,是系統資源分配和調度運行的基本單位 線程是進程執行任務的最小調度單位
系統開銷 創建切換開銷大,資源要重新分配和回收 僅保存少量寄存器的內容,開銷小,并且在進程的地址空間執行代碼
占有資源 擁有分配的所有資源 基本不占資源,僅有其運行不可少的資源(程序計數器、一組寄存器和棧)
安全性 進程間相互獨立 線程間共享進程的資源,可以互相通信和影響

掌握系列之并發編程-1.并發基礎

CPU線程調度

大多數的應用程序為了提高其執行效率,而采用多線程模式。充分利用CPU的核心來實現高效率運行。那是不是最大只能同時開啟8個線程呢?如果想開啟更多線程,可以嗎?CPU內部該如何處理呢?

對于4核8線程的CPU來說,如果只起8個線程,每個虛擬內核都各自執行一個線程,這是最簡單的高效率利用方式。但是在實際使用時這是不可能的。首先,計算機硬件必須有操作才能運行,而操作系統啟動后在運行過程中必不可少的要執行各種任務;其次,個人運行的程序也是要啟動線程來執行各種各樣的任務調度。所以,對于一臺電腦,不管是個人PC還是服務器,其真正運行的線程肯定是多于CPU的內核數的,那它是如何保證各個任務流暢運行的呢?

這就是CPU的線程調度。采用一定的算法把CPU的使用權合理的分配給線程,使得任務執行。

有兩種調度模型,分時調度搶占式調度

分時調度模型是指讓所有的線程輪流獲得CPU的使用權,并且平均分配每個線程占用的CPU時間片。

搶占式調度模型是指優先讓運行池中優先級最高的線程占用CPU,如果優先級相同,則隨機選擇一個線程來占用CPU。處于運行中狀態的線程會一直運行,直到它不得不放棄CPU。

JVM采用搶占式調度。

一個線程會因為以下原因而放棄CPU:

  1. JVM使其暫時放棄CPU,轉入就緒狀態
  2. 阻塞
  3. 執行結束
串行、并行和并發

串行:是指多個任務,一個執行完接著一個

并行:每個核心執行一個任務,同一時刻多個任務同時執行

并發:多個任務在單核心上執行,同一時刻只有一個任務,系統不停的切換任務,看起來像是同時執行,實際上是不停的切換

多核下的線程數量選擇

對于計算密集型任務,線程數量不宜過多,因為本身任務就是高CPU利用率,線程多的話,會因為上下文切換而浪費資源。對于IO密集型任務,比如磁盤IO和網絡IO,因為任務是低CPU利用率,所以可以適當多開線程。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

石楼县| 靖州| 秦皇岛市| 宁远县| 安平县| 海淀区| 巢湖市| 和林格尔县| 乌拉特中旗| 马龙县| 怀仁县| 麻栗坡县| 于都县| 芦溪县| 孝义市| 清苑县| 时尚| 南雄市| 岚皋县| 达尔| 车险| 黄陵县| 黔南| 黑水县| 北碚区| 安仁县| 漳浦县| 湛江市| 临安市| 南皮县| 阿坝县| 竹山县| 潜山县| 甘德县| 龙游县| 江华| 汝州市| 全椒县| 仪陇县| 土默特左旗| 基隆市|