CPU,並行,併發,多線程

  1. CPU I5 處理器有四核四線程 和 四核八線程兩種: (1).四核四線程:就是CPU有四個物理核心,每一個核心一個時間內只處理一個線程調度,任務管理器 中只顯示4個CPU圖表; ( 2) 四核八線程:使用了超線程技術,把一個物理核心,模擬成兩個邏輯核心,任務管理器中會顯示8個CPU圖表;java

    I7 處理器的八核八線程:有八個物理核心能夠同時處理8個線程任務調度;多線程

  2. 並行 (1) 多個電腦(節點)都在作一樣的事情; (2) 單個電腦(節點)的1. 這裏是列表文本多個核心,都在作一樣的事情 (3) 是真正意義上的不一樣事件或線程在同一時刻,在不一樣CPU資源呢上(多核),同時執行。併發

  3. 併發 (1) Concurrency,是併發的意思。併發的實質是一個物理CPU(也能夠多個物理CPU) 在若干道程序(或線程)之間多路複用,併發性是對有限物理資源強制行使多用戶共享以提升效率。 (2) 微觀角度:全部的併發處理都有排隊等候,喚醒,執行等這樣的步驟,在微觀上他們都是序列被處理的,若是是同一時刻到達的請求(或線程)也會根據優先級的不一樣,而前後進入隊列排隊等候執行。 (3) 宏觀角度:多個幾乎同時到達的請求(或線程)在宏觀上看就像是同時在被處理。其實是CPU不停的在切換程序調度 通俗點講,併發就是隻有一個CPU資源,程序(或線程)之間要競爭獲得執行機會、操作系統

  4. 多線程: (1) 在瞭解線程以前,要先知道進程這個概念。進程是一個具備獨立功能的程序關於某個數據集合的一次運行活動。簡單點說,進程就是執行中的程序活動,是一個活動的實體。 (2) 多進程,就比如同時打開了Word,Excel和Visio,他們都是不一樣的程序運行活動,即多個進程同時啓動而已,這個概念比較好理解。 (3)線程,是一個執行中的程序活動(即進程)的多個執行路徑,執行調度的單位。線程依託於進程存在,在進程之下,能夠共享進程的內存,並且還擁有一個屬於本身的內存空間,這段內存空間也叫作線程棧,是在創建線程時由系統分配的,主要用來保存線程內部所使用的數據。 (4)多線程,指在一個進程下有多個線程。各個線程執行本身的任務,這些線程能夠」同時進行「(這裏加了雙引號,下面會講述到加雙引號的緣由)。 (5)那多線程有什麼好處?多線程應用在生活中隨處可見,Word文檔就是一個很好的例子。Word有「後臺打印」的功能,用戶點擊打印按鈕後,若是發現能夠對當前文本進行修改,能夠在打印過程當中回到主界面進行修改、保存等操做。 若是沒有應用多線程,不妨假設用戶要打印的文本很長很長,那麼用戶要等打印操做執行完後,才能夠對文本進行修改編輯保存等,這樣用戶體驗就不如多線程的好。還有迅雷,有沒有發現迅雷是能夠同時下載東西的?例如同時下載A,B,A下載進度到53.4%,B下載進度到47.1%,有時A速度快些,有時B速度快些,反正能肯定的是A,B都在下載內容,而不是必定要等A下載完後,B才能夠開始下載,這也是多線程的做用。所以,多線程強調」同時,一塊兒進行「,而不是單一的順下操做。線程

  5. 經過多線程實現併發,並行: (1)java中的Thread類定義了多線程,經過多線程能夠實現併發或並行。 (2)在CPU比較繁忙,資源不足的時候(開啓了不少進程),操做系統只爲一個含有多線程的進程分配僅有的CPU資源,這些線程就會爲本身儘可能多搶時間片,這就是經過多線程實現併發,線程之間會競爭CPU資源爭取執行機會。 (3)在CPU資源比較充足的時候,一個進程內的多線程,能夠被分配到不一樣的CPU資源,這就是經過多線程實現並行。 (4)至於多線程實現的是併發仍是並行?上面所說,所寫多線程可能被分配到一個CPU內核中執行,也可能被分配到不一樣CPU執行,分配過程是操做系統所爲,不可人爲控制。全部,若是有人問我我所寫的多線程是併發仍是並行的?我會說,都有可能。 無論併發仍是並行,都提升了程序對CPU資源的利用率,最大限度地利用CPU資源。隊列

相關文章
相關標籤/搜索