本文作為圖解java并發編程的第三篇,前2篇訪問地址如下所示:
- 圖解行程執行緒、互斥鎖與信號量-看完還不懂你來打我
- 8成以上的java執行緒狀態圖都畫錯了--圖解java并發第二篇
一、CPU角度的并發與并行

并發
曾經我作為一個不是很愛學習的孩子,在上學的時候經常做這樣的事情:在數學課上補物理作業,數學課聽懂了,物理作業也上交了,不謙虛的說,我是具備這樣的能力,但很可惜沒用對地方,
很多同學說:“你是不是有多個大腦?”,肯定不是啊,其實這是一種切換的能力,當你同時做多件事情,并且能夠快速切換的時候,在別人開來,你就有了并發的能力,但是你的大腦還是一個大腦,
我們的計算機在絕大部分時間都運行很多很多的行程與執行緒,所以CPU并發執行并切換分配CPU時間片資源是一種常態,只是CPU的執行速度實在是太快了,快到絕大部分情況下你都無法感知“執行執行緒的切換”,所以看上去它在一邊播放音樂,一邊運行瀏覽器,一邊運行其他軟體,
并行
知道了計算機中并發的概念,我們來舉例了解一下并行的概念,
- 你在餐廳點餐,點餐后等餐的同時你在讀書,看上去你是在做兩件事,等餐和讀書,實際上只有一件事是需要你實際操作的,那就是讀書;另外一件事實際上是做菜,做菜是由餐廳的廚師進行的,
隨著計算機多核CPU的普及,計算機也在一定程度上具備了并行計算的能力,那這么說,單核心的CPU就一定不存在并行能力嘍?也并非完全如此,若單核心的CPU擁有Hyper-threading技術,那么單核心可以并行的運行兩個邏輯執行緒,
二、執行緒角度的并發與并行
上面的并發與并行的解釋更多的是從CPU運行的角度,但作為程式員更關心的是作為開發者如何區分并發與并行,
從執行緒的角度去談并行,通常是指在多執行緒間不存在資料共享或通信,能夠利用CPU的并行能力去運行多執行緒,

從執行緒的角度去談并發,通常是指多個執行緒之間存在資源共享(記憶體、代碼段等),彼此協調共享資源的使用,從而交出或獲得CPU執行時間片的使用權,

總結一句話,希望對你與理解并發與并行有幫助,并發是看上去的并行,實際上的資源切換,并發目的是將資源利用能力最大化、最優化,
歡迎關注我的博客,里面有很多精品合集
- 本文轉載注明出處(必須帶連接,不能只轉文字):字母哥博客,
覺得對您有幫助的話,幫我點贊、分享!您的支持是我不竭的創作動力! ,另外,筆者最近一段時間輸出了如下的精品內容,期待您的關注,
- 《手摸手教你學Spring Boot2.0》
- 《Spring Security-JWT-OAuth2一本通》
- 《實戰前后端分離RBAC權限管理系統》
- 《實戰SpringCloud微服務從青銅到王者》
- 《VUE深入淺出系列》
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/25906.html
標籤:Java
