Java併發程式設計實戰 第11章 效能與可伸縮性

2021-07-31 06:07:40 字數 473 閱讀 8085

執行緒最主要的目的是提高程式的執行效能。但執行緒也會引入額外的開銷,如執行緒之間的協調,上下文切換,執行緒的建立和銷毀,執行緒的排程。

效能有很多指標,如執行速度,吞吐量,可伸縮性等。

可伸縮性指增加計算資源時(如cpu,記憶體,i/o頻寬,儲存容量等),程式的吞吐量或處理能力能相應的增加。

amdahl定律

可伸縮性取決於所在**中必須序列執行的**比例。

執行緒引入的開銷

如何提公升可伸縮性?

減少鎖的競爭能夠提高效能和伸縮性。

鎖上發生的競爭有兩個因素:鎖的請求頻率和每次的持有該鎖的時間

放棄獨佔鎖

監測cpu的利用率

不用物件池

減少上下文切換的開銷

《java併發程式設計實戰》筆記(第4章)

十九 設計執行緒安全的類 在設計執行緒安全類的過程中,需要包含以下三個基本要素 1.找出構成物件狀態的所有變數 2.找出約束狀態變數的不變性條件 3.建立物件狀態的併發訪問管理策略。19.1 設計執行緒安全的類 1.類的不變性條件和後驗條件約束了在物件上有哪些狀態和狀態轉換是有效的。2.某些方法還包...

併發程式設計實戰筆記 第2章

1 無狀態的物件一定是執行緒安全的。2 不恰當的執行時序,出現不正確的結果,定義為競態條件。3 單狀態變數,使用原子型別 4 多狀態變數互動,使用synchronzied,包括2部分,1 要鎖定的物件 2 要保護的 塊。被保護的 塊,操作可看成乙個事務。5 內建鎖是可重入的,也就是自己去獲取自己已經...

Java併發程式設計實戰 第5章 基礎構建模組

同步容器類 併發容器 阻塞佇列和生產者 消費者模式 序列執行緒封閉 執行緒間轉移物件所有權,之前的所有者不會再訪問它 deque blockingdeque 對queue和blockingqueue進行擴充套件 工作密取 乙個工作者要訪問另乙個工作者的佇列,會從尾部獲取,降低佇列上的競爭程度 阻塞方...