圖解併發與並行-分別從CPU和執行緒的角度理解
阿新 • • 發佈:2020-09-13
本文作為圖解java併發程式設計的第三篇,前2篇訪問地址如下所示:
* [圖解程序執行緒、互斥鎖與訊號量-看完還不懂你來打我](http://www.zimug.com/java/concurrency/%e5%9b%be%e8%a7%a3%e8%bf%9b%e7%a8%8b%e7%ba%bf%e7%a8%8b%e3%80%81%e4%ba%92%e6%96%a5%e9%94%81%e4%b8%8e%e4%bf%a1%e5%8f%b7%e9%87%8f-%e7%9c%8b%e5%ae%8c%e8%bf%98%e4%b8%8d%e6%87%82%e4%bd%a0%e6%9d%a5%e6%89%93/.html)
* [8成以上的java執行緒狀態圖都畫錯了--圖解java併發第二篇](http://www.zimug.com/java/concurrency/8%e6%88%90%e4%bb%a5%e4%b8%8a%e7%9a%84java%e7%ba%bf%e7%a8%8b%e7%8a%b6%e6%80%81%e5%9b%be%e9%83%bd%e7%94%bb%e9%94%99%e4%ba%86%ef%bc%8c%e7%9c%8b%e7%9c%8b%e8%bf%99%e4%b8%aa-%e5%9b%be%e8%a7%a3java%e5%b9%b6/.html)
## 一、CPU角度的併發與並行
![](https://img2020.cnblogs.com/other/1815316/202009/1815316-20200913092240032-1101412976.png)
**併發**
曾經我作為一個不是很愛學習的孩子,在上學的時候經常做這樣的事情:在數學課上補物理作業,數學課聽懂了,物理作業也上交了。不謙虛的說,我是具備這樣的能力,但很可惜沒用對地方。
很多同學說:“你是不是有多個大腦?”,肯定不是啊,其實這是一種切換的能力。當你同時做多件事情,並且能夠快速切換的時候。在別人開來,你就有了併發的能力,但是你的大腦還是一個大腦。
我們的計算機在絕大部分時間都執行很多很多的程序與執行緒,所以CPU併發執行並切換**分配CPU時間片資源**是一種常態。只是CPU的執行速度實在是太快了,快到絕大部分情況下你都無法感知“執行執行緒的切換”。所以看上去它在一邊播放音樂,一邊執行瀏覽器,一邊執行其他軟體。
**並行**
知道了計算機中併發的概念,我們來舉例瞭解一下並行的概念。
* 你在餐廳點餐,點餐後等餐的同時你在讀書。看上去你是在做兩件事,等餐和讀書。實際上只有一件事是需要你實際操作的,那就是讀書;另外一件事實際上是做菜,做菜是由餐廳的廚師進行的。
隨著計算機多核CPU的普及,計算機也在一定程度上具備了平行計算的能力。那這麼說,單核心的CPU就一定不存在並行能力嘍?也並非完全如此,若單核心的CPU擁有**Hyper-threading**技術,那麼單核心可以並行的執行兩個邏輯執行緒。
## 二、執行緒角度的併發與並行
上面的併發與並行的解釋更多的是從CPU執行的角度,但作為程式設計師更關心的是作為開發者如何區分併發與並行。
從執行緒的角度去談並行,通常是指在多執行緒間不存在資料共享或通訊,能夠利用CPU的並行能力去執行多執行緒。
![](https://img2020.cnblogs.com/other/1815316/202009/1815316-20200913092240237-1626319928.png)
從執行緒的角度去談併發,通常是指多個執行緒之間存在資源共享(記憶體、程式碼段等),彼此協調共享資源的使用,從而交出或獲得CPU執行時間片的使用權。
![](https://img2020.cnblogs.com/other/1815316/202009/1815316-20200913092240432-1501792540.png)
總結一句話,希望對你與理解併發與並行有幫助,**併發是看上去的並行,實際上的資源切換,併發目的是將資源利用能力最大化、最優化。**
## 歡迎關注我的部落格,裡面有很多精品合集
* 本文轉載註明出處(必須帶連線,不能只轉文字):[字母哥部落格](http://www.zimug.com)。
**覺得對您有幫助的話,幫我點贊、分享!您的支援是我不竭的創作動力!** 。另外,筆者最近一段時間輸出瞭如下的精品內容,期待您的關注。
* [《手摸手教你學Spring Boot2.0》]( https://www.kancloud.cn/hanxt/springboot2/content )
* [《Spring Security-JWT-OAuth2一本通》](https://www.kancloud.cn/hanxt/springsecurity/content)
* [《實戰前後端分離RBAC許可權管理系統》](https://www.kancloud.cn/hanxt/vue-spring/content)
* [《實戰SpringCloud微服務從青銅到王者》](https://www.kancloud.cn/hanxt/springcloud/content)
* [《VUE深入淺出系列》](https://www.kancloud.cn/hanxt/vuejs2/