當多個執行緒在操作的時候,如果系統只有乙個cpu,同一時刻就只有一條執行緒指令在執行,但是各個執行緒指令被快速的輪換執行,這就是的巨集觀上看起來是多個執行緒在同時執行。但微觀上並不是這樣,只是將時間分成若干個片段,多個執行緒交替執行。
如圖系統只有1個cpu,執行緒就要通過競爭得到執行機會。誰得到cpu誰就執行。
如果系統有1個以上的cpu,則系統的執行緒有可能非併發而是並行。當乙個cpu執行乙個執行緒時,另乙個cpu也在執行另外的執行緒,兩個執行緒互不爭奪cpu資源,可以同時進行,這就稱為並行。
這就是和併發不同之處,同一時刻執行緒指令都在執行。
是指短時間內大量的訪問和請求,例如雙十一。想系統能夠適應高併發狀態,則需要全面優化優化,包括,硬體、網路、系統架構、開發語言的選取、資料結構的運用、演算法優化、資料庫優化……而多執行緒只是其中解決方法之一。
多執行緒在高併發問題中起到的作用是使計算機資源在每一時刻能達到最大利用率,不至於浪費計算機資源使其閒置。
1.thread類定義實現了多執行緒,通過多執行緒可以實現併發或者並行。
2.在cpu比較繁忙資源不足的時候,作業系統只為乙個含有多執行緒的程序分配僅有的cpu資源,這些執行緒就會自己爭奪時間片。這就是多執行緒實現併發,執行緒之間爭奪cpu資源獲得執行機會。
3.在cpu資源較足的時候,乙個程序內的多執行緒,可以被分配到不同的cpu資源,這就是多執行緒實現並行。
4.至於多執行緒實現的究竟是併發還是並行?前面兩點提到的說明這是都有可能的。因為多執行緒可能被分配到乙個cpu核心執行,也可能被分配到不同的cpu資源中執行。然而這個過程是作業系統幹的,不關我的事。所以我也不確定最後究竟是併發還是並行。
5.不管是併發還是並行,都提高了對cpu資源的利用率,最大限度的利用了cpu資源。
高併發(1) 併發與並行的區別
說到高併發,那麼就要先理解一件事情,那就是併發跟並行的區別,接下來便講講兩者的區別。一 併發 說到併發,什麼是併發呢?先舉個例子來說明一下吧。比如生活中常見的咖啡機。現在有一台咖啡機在售賣咖啡,這時候有很多客人都在購買咖啡,這時候對於使用者購買咖啡來說,就是並發行為,因為咖啡機同時只能給一名客人 咖...
架構 高併發與高並行
1 什麼是高併發?什麼是高並行?erlang 之父 joe armstrong 用一張5歲小孩都能看懂的 釋了併發與並行的區別 併發是兩個佇列交替使用一台咖啡機,並行是兩個佇列同時使用兩台咖啡機,如果序列,乙個佇列 使用一台咖啡機,後面的人也只能死等著他回來才能去接咖啡,這效率無疑是最低的。或者換一...
高併發 並行,多執行緒 同步非同步,鎖
1 為什麼需要並行?業務要求 業務需要邏輯執行單元,想到用執行緒充當這個單元 效能並行 比序列 複雜的多。2 幾個重要的概念 同步 synchronous 和非同步 asynchronous 相對於方法呼叫而言。同步等待方法返回。非同步呼叫瞬間返回,呼叫不一定完成,在後台另起乙個執行緒慢慢的去做它的...