摘要:并發與并行并發與并行的概念并行多個實例或者多臺機器同時執行一段處理邏輯,是真正的同時。并發通過調度算法,讓用戶看上去同時執行,實際上從操作層面不是真正的同時。并行與并發的異同點相似性都是為了合理且最大化利用系統的資源。
并發(concurrency)與并行(parallellism)
并發與并行的概念
??并行:多個cpu實例或者多臺機器同時執行一段處理邏輯,是真正的同時。
??并發:通過cpu調度算法,讓用戶看上去同時執行,實際上從cpu操作層面不是真正的同時。并發往往在場景中有公用的資源,那么針對這個公用的資源往往產生瓶頸,我們會用TPS或者QPS來反應這個系統的處理能力。
并行與并發的異同點
??相似性:都是為了合理且最大化利用系統的資源。
??差異性:并發(concurrency)與并行(parallellism)這兩種概念理解起來比較容易混淆,我就在如下進行詳細講解。
????
??如上圖所示,并發(concurrency)是指在一個cpu處理的線程中一直不斷的切換任務,最終給人的感覺就像同時執行了多個任務。而并行(parallellism)在多個cpu同一時間處理多個任務(在一個cpu中出現不了并行的狀態)
并發(concurrency)與并行(parallellism)的實例
??在簡單的傳統模式中的生產者及消費者模式中就能體現 并發(concurrency)與并行(parallellism)的實例:
/** * 生產者生產出來的產品交給店員 */ public synchronized void produce(){ if(this.product >= MAX_PRODUCT){ try{ wait(); System.out.println("產品已滿,請稍候再生產"); } catch(InterruptedException e){ e.printStackTrace(); } return; } this.product++; System.out.println("生產者生產第" + this.product + "個產品."); notifyAll(); //通知等待區的消費者可以取出產品了 }
/** * 消費者從店員取產品 */ public synchronized void consume() { if(this.product <= MIN_PRODUCT) { try { wait(); System.out.println("缺貨,稍候再取"); } catch (InterruptedException e) { e.printStackTrace(); } return; } System.out.println("消費者取走了第" + this.product + "個產品."); this.product--; notifyAll(); //通知等待去的生產者可以生產產品了 }
在傳統的模式中生產者和消費者在同一線程中得意實現就算線程并發(concurrency),如果生產者模式和消費者模式在不同的線程中進行實現,就算做并行(parallellism)。
?????????????參考文檔:https://www.cnblogs.com/wxd01...
?????????????圖片來源:https://zhidao.baidu.com/ques...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/76959.html
摘要:垃圾回收算法與垃圾回收器綜述我們常說的垃圾回收算法可以分為兩部分對象的查找算法與真正的回收方法。串行垃圾回收器一次只使用一個線程進行垃圾回收并行垃圾回收器一次將開啟多個線程同時進行垃圾回收。 垃圾回收算法與 JVM 垃圾回收器綜述歸納于筆者的 JVM 內部原理與性能調優系列文章,文中涉及的引用資料參考 Java 學習與實踐資料索引、JVM 資料索引。 showImg(https://s...
摘要:是目前的實驗收集器。也是需要暫停程序一切的工作,然后多線程執行垃圾回收。與最大的不同,它關注的是垃圾回收的吞吐量。這里的吞吐量指的是總時間與垃圾回收時間的比例。篩選回收,評估標記垃圾,根據模式回收垃圾。 《對象搜索算法與回收算法》介紹了垃圾回收的基礎算法,相當于垃圾回收的方法論。接下來就詳細看看垃圾回收的具體實現。 上文提到過現代的商用虛擬機的都是采用分代收集的,不同的區域用不同的收集...
摘要:適用收集場景新生代收集老年代收集并行收集器又叫吞吐量收集器應用于多核系統。它是為了平衡延時和吞吐量之間的一種最優關系。 回顧傳統垃圾回收器 HotSpot 垃圾收集器實現 Serial Collector(串型收集器) 使用場景,大多數服務器是單核CPU。適用收集場景:1. 新生代收集(Young Generation Collection)2. 老年代收集(Old Genera...
摘要:中關于線程的標準庫是,之前在版本中的在之后更名為,無論是還是都應該盡量避免使用較為底層的而應該使用。而與線程相比,協程尤其是結合事件循環無論在編程模型還是語法上,看起來都是非常友好的單線程同步過程。 項目地址:https://git.io/pytips 要說到線程(Thread)與協程(Coroutine)似乎總是需要從并行(Parallelism)與并發(Concurrency)談起...
摘要:虛擬機棧區也就是通常所說的棧區,它描述的是方法執行的內存模型,每個方法被執行的時候都創建一個棧幀,用于存儲局部變量表操作數棧動態鏈接方法出口等。每個方法被調用到完成,相當于一個棧幀在虛擬機棧中從入棧到出棧的過程。 大多數情況下我們對GC的了解都只是淺層含義上的,下面我們來詳細講解下內部的一些實現原理。講解GC之前,我們得先了解下JVM的內存結構,才能讓我們理解GC導致是干嘛的。 一.J...
閱讀 1265·2021-09-27 13:35
閱讀 2563·2021-09-06 15:12
閱讀 3380·2019-08-30 15:55
閱讀 2830·2019-08-30 15:43
閱讀 432·2019-08-29 16:42
閱讀 3446·2019-08-29 15:39
閱讀 3062·2019-08-29 12:28
閱讀 1239·2019-08-29 11:11