Java併發程式設計實戰--Amdahl定律
在有些問題中,如果可用資源越多,那麼問題的解決速度就越快。例如,如果參與收割莊稼的工人越多,那麼就能越快地完成收割工作。而有些任務本質上是序列的,例如,即使增加再多的工人也不能增加作物的生長速度。如果使用執行緒主要是為了發揮多個處理器的處理能力,那麼就必須對問題進行合理的並行分解,並使得程式能有效地使用這種潛在的並行能力。
大多數併發程式都與農業耕作有著許多相似之處,它們都是由一系列的並行工作和序列工作組成的。Amdahl定律描述的是:在增加計算資源的情況下,程式在理論上能夠實現最高加速比,這個值取決於程式中可並行元件與序列元件所佔的比重。假定F是必須被序列執行的部分,那麼根據Amdahl定律,在包含N個處理器的機器中,最高的加速比為:
當N趨近無窮大時,最大的加速比趨近於1/F。因此,如果程式有50%的計算需要序列執行,那麼最高的加速比只能是2(而不管有多少個執行緒可用):如果在程式中有10%的計算需要序列執行,那麼最高的加速比將接近10。Amdahl定律還量化了序列化的效率開銷。在擁有19個處理器的系統中,如果程式中有10%的部分需要序列執行,那麼最高的加速比為5.3%(53%的使用率),在擁有100個處理器的系統中,加速比可以達到9.2(9%的使用率)。即使擁有無限多的CPU,加速比也不可能為10.
下圖給出了處理器利用率在不同序列比例以及處理器數量情況下的變化曲線。(利用率的定義為:加速比除以處理器的數量。)隨著處理器數量的增加,可以很明顯地看到,即使序列部分所佔的百分比很小,也會極大地限制當增加計算資源時能夠提升的吞吐率。
在所有併發程式中都包含一些序列部分。如果你認為你的程式中不存在序列部分,那麼可以再仔細檢查一遍。
Java併發程式設計實戰pdf及案例原始碼下載:
http://download.csdn.net/detail/xunzaosiyecao/9851028
作者:jiankunking 出處:http://blog.csdn.net/jiankunking
相關文章
- Java併發程式設計實戰Java程式設計
- Java併發程式設計實戰--FutureTaskJava程式設計
- Java併發系列—併發程式設計挑戰Java程式設計
- Java併發程式設計實戰總結 (一)Java程式設計
- 《JAVA併發程式設計實戰》顯式鎖Java程式設計
- Java併發程式設計實戰(4)- 死鎖Java程式設計
- Java併發程式設計實戰——讀後感Java程式設計
- Java併發程式設計實戰--筆記三Java程式設計筆記
- Java併發程式設計實戰--筆記四Java程式設計筆記
- Java併發程式設計實戰--筆記二Java程式設計筆記
- Java併發程式設計實戰--this引用逸出Java程式設計
- Java併發程式設計實戰--筆記一Java程式設計筆記
- Java併發程式設計實戰--閉鎖 CountDownLatchJava程式設計CountDownLatch
- Java併發程式設計實戰--事實不可變物件Java程式設計物件
- 【面試實戰】# 併發程式設計面試程式設計
- 《JAVA併發程式設計實戰》任務執行Java程式設計
- 《JAVA併發程式設計實戰》取消和關閉Java程式設計
- 《JAVA併發程式設計實戰》物件的組合Java程式設計物件
- 實戰Java高併發程式設計模式視訊Java程式設計設計模式
- Java併發程式設計實戰--計數訊號量(Semaphore)Java程式設計
- Java併發程式設計 - 第十一章 Java併發程式設計實踐Java程式設計
- 《JAVA併發程式設計實戰》基礎構建模組Java程式設計
- 併發程式設計實戰——鎖分段程式設計
- Java併發程式設計實踐Java程式設計
- Java併發程式設計實戰--顯式的Condition物件Java程式設計物件
- Java併發程式設計實戰--讀書筆記(目錄)Java程式設計筆記
- java 併發程式設計Java程式設計
- Java併發程式設計Java程式設計
- Java併發程式設計實戰 04死鎖了怎麼辦?Java程式設計
- Java併發程式設計實戰-王寶令-極客時間Java程式設計
- Java併發程式設計實戰(5)- 執行緒生命週期Java程式設計執行緒
- Java併發程式設計實戰系列16之Java記憶體模型(JMM)Java程式設計記憶體模型
- JAVA實現網路程式設計之併發程式設計Java程式設計
- 【Java併發程式設計】併發程式設計大合集-值得收藏Java程式設計
- Java併發程式設計實踐-this溢位Java程式設計
- JAVA併發程式設計實踐 下載Java程式設計
- java併發程式設計實戰筆記(部分實戰未看,老舊章節跳過)Java程式設計筆記
- Java併發程式設計實戰筆記3:基礎構建模組Java程式設計筆記