《java 併發程式設計實戰》基礎構建筆記

2021-09-02 20:51:15 字數 536 閱讀 5956

5.1.1 同步容器類的問題,在多執行緒的情況下,如,a 執行緒 對vector  執行 get 操作, 另外乙個執行緒對vector 進行delete 操作,由於執行緒交替執行,可能有乙個執行緒獲取下標 為9 但是另外乙個執行緒已經刪除了下標為9的資料,導致陣列下標越界,所以對同步容器進行復合操作,在高併發的情況下,就需要客戶端加鎖

5.1.2 迭代器與併發修改錯誤,在使用迭代器的過程中,可能會出現併發修改錯誤問題,例如 a執行緒刪除了乙個元素,當b執行緒發現計數器發生改變時,會丟擲併發修改錯誤溢位,這個是乙個jdk 的 設計,使用fail-fast ,使用快速失敗模式,通知使用者已經發生異常了,在單執行緒的情況下也會出現,當使用迭代器模式刪除資料的時候,會產生錯誤

public class addremovelistelement 

}//foreach迴圈等效於迭代器

/*iteratoriterator=list.iterator();

while(iterator.hasnext())

}*/

}}

java併發程式設計實戰 基礎構建模組2

1,通過併發容器來替代同步容器,可以極大地提高伸縮性並降低風險 2,concurrenthashmap 2.1,用來替代同步的map,同map一樣也是基於雜湊的map。2.2,但是它使用一種更加細粒度的加鎖機制 分段鎖lockstriping 來實現大程度的共享。2.3,它允許多個執行緒同時對容器進...

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

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

Java併發程式設計實戰 總結

1.可變狀態是至關重要的。所有的併發問題都可以歸結為如何協調對併發狀態的訪問,可變狀態越少,就越容易確保執行緒安全性。2.盡量將域宣告為final型別,除非需要它們是可變的。3.不可變物件一定是執行緒安全的。不可變物件能極大地降低併發程式設計的複雜性。它們更為簡單而且安全,可以任意共享而無須使用加鎖...