把一個集合看分成若干partition, 每個partiton一把鎖。ConcurrentHashMap就是分了
16個區域,這16個區域之間是可以併發的。
mysql innode的行級鎖運用的就是該思想。
範圍越大,運行時間越長
運行時間越長,其它線程等待的時間就越長
獨立不相關的數據用不同的鎖,比如一個對象有很多字段,這些字段是獨立的,而不是組合起來表示一個邏輯數據(比如firstName, lastName,必須組合起來表示一個名字),那麼可以每個字段各自對應不同的鎖,而不是鎖整個對象
讀多寫少的場景非常適用, 能夠保持最終一致性。copyOnWriteArray 主要解決讀、遍歷和寫之間的衝突,對數組寫(更新、增加)的時候,copy一個新數組做,這樣iterator永遠不會有ConcurrentModification問題,讀也永遠都是讀得完結狀態下的值