圖解併發與並行-分別從CPU和執行緒的角度理解
本文作為圖解java併發程式設計的第三篇,前2篇訪問地址如下所示:
一、CPU角度的併發與並行
併發
曾經我作為一個不是很愛學習的孩子,在上學的時候經常做這樣的事情:在數學課上補物理作業,數學課聽懂了,物理作業也上交了。不謙虛的說,我是具備這樣的能力,但很可惜沒用對地方。
很多同學說:“你是不是有多個大腦?”,肯定不是啊,其實這是一種切換的能力。當你同時做多件事情,並且能夠快速切換的時候。在別人開來,你就有了併發的能力,但是你的大腦還是一個大腦。
我們的計算機在絕大部分時間都執行很多很多的程式與執行緒,所以CPU併發執行並切換分配CPU時間片資源是一種常態。只是CPU的執行速度實在是太快了,快到絕大部分情況下你都無法感知“執行執行緒的切換”。所以看上去它在一邊播放音樂,一邊執行瀏覽器,一邊執行其他軟體。
並行
知道了計算機中併發的概念,我們來舉例瞭解一下並行的概念。
- 你在餐廳點餐,點餐後等餐的同時你在讀書。看上去你是在做兩件事,等餐和讀書。實際上只有一件事是需要你實際操作的,那就是讀書;另外一件事實際上是做菜,做菜是由餐廳的廚師進行的。
隨著計算機多核CPU的普及,計算機也在一定程度上具備了平行計算的能力。那這麼說,單核心的CPU就一定不存在並行能力嘍?也並非完全如此,若單核心的CPU擁有Hyper-threading技術,那麼單核心可以並行的執行兩個邏輯執行緒。
二、執行緒角度的併發與並行
上面的併發與並行的解釋更多的是從CPU執行的角度,但作為程式設計師更關心的是作為開發者如何區分併發與並行。
從執行緒的角度去談並行,通常是指在多執行緒間不存在資料共享或通訊,能夠利用CPU的並行能力去執行多執行緒。
從執行緒的角度去談併發,通常是指多個執行緒之間存在資源共享(記憶體、程式碼段等),彼此協調共享資源的使用,從而交出或獲得CPU執行時間片的使用權。
總結一句話,希望對你與理解併發與並行有幫助,併發是看上去的並行,實際上的資源切換,併發目的是將資源利用能力最大化、最最佳化。
歡迎關注我的部落格,裡面有很多精品合集
- 本文轉載註明出處(必須帶連線,不能只轉文字):。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/3244/viewspace-2826252/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 執行緒 並行 與 併發 的區別執行緒並行
- Java多執行緒--併發和並行的區別Java執行緒並行
- [Java併發]執行緒的並行等待Java執行緒並行
- java多執行緒詳解(併發,並行,同步)Java執行緒並行
- Java併發(一)----程式、執行緒、並行、併發Java執行緒並行
- java多執行緒與併發 - 執行緒池詳解Java執行緒
- 從 JDK 原始碼角度看 java 併發執行緒的中斷JDK原始碼Java執行緒
- java併發與執行緒Java執行緒
- 深入理解Java多執行緒與併發框(第①篇)——執行緒的狀態Java執行緒
- 【高併發】深入理解執行緒的執行順序執行緒
- 並行和併發的區別與聯絡並行
- 多執行緒與高併發(二)執行緒安全執行緒
- 併發與多執行緒之執行緒安全篇執行緒
- php中的執行緒、程式和併發區別PHP執行緒
- 從一切皆資料與計算的角度,理解程式與執行緒執行緒
- 我已經理解了併發和並行的區別並行
- 深入理解併發和並行並行
- 程式與執行緒、同步與非同步、阻塞與非阻塞、併發與並行執行緒非同步並行
- Java 併發:執行緒、執行緒池和執行器全面教程Java執行緒
- 從原始碼的角度解析執行緒池執行原理原始碼執行緒
- cpu、核與執行緒執行緒
- Java併發實戰一:執行緒與執行緒安全Java執行緒
- 深入理解Java多執行緒與併發框(第⑪篇)——執行緒池引數Java執行緒
- 執行緒和執行緒池的理解與java簡單例子執行緒Java單例
- Java多執行緒與併發 - 瞭解“monitor”Java執行緒
- 【python高併發】程序、執行緒的理解Python執行緒
- 【多執行緒與高併發】- 執行緒基礎與狀態執行緒
- 【多執行緒與高併發】從一則招聘資訊進入多執行緒的世界執行緒
- 10、Java併發性和多執行緒-執行緒安全與不可變性Java執行緒
- 多執行緒併發執行及解決方法執行緒
- 快速理解併發、並行並行
- 【高併發】從原始碼角度分析建立執行緒池究竟有哪些方式原始碼執行緒
- 4核8執行緒和6核6執行緒的CPU哪個好?電腦CPU核數多和執行緒多的區別執行緒
- Java高併發與多執行緒(三)-----執行緒的基本屬性和主要方法Java執行緒
- 如何檢視CPU核數和執行緒數?CPU的核心數、執行緒數的關係和區別執行緒
- Java 併發和多執行緒(一) Java併發性和多執行緒介紹[轉]Java執行緒
- 多執行緒與高併發(一)多執行緒入門執行緒
- Java高併發與多執行緒(二)-----執行緒的實現方式Java執行緒