java集合的進一步思考

咱們都知道數據庫的事務級別分爲了四種,如本文後面的表格所示,事務隔離級別越高併發性越差可是數據越安全。由此我想到了java裏面的集合。舉例來講Map接口。java

HashMap這個是最基礎的Map實現,他不是線程安全的,對應着有點和數據庫最低的事務級別類似;數據庫

HashTable這個是目前已經廢棄或者是官方不在建議使用的類了,由於他雖然是線程安全的可是他的併發性過低了,鎖全數組,這個就至關於數據表裏面的順序話吧,太嚴格了,性能有問題了也不會大規模的推薦;數組

ConcurrentHashMap若是是多線程用到的話,如今官方推薦的是這個類,這個類把整個數組分紅了若干份,每一份單獨享用一個本身的鎖,這樣的話可以大大增長併發數。可是就像Repeatable ready會出現幻讀同樣,這個類也會出現相似的現象,對於須要檢索全數組的狀況。安全

今天作了這個小小的總結對比不知道對不對,歡迎留言討論多線程

個人博客併發

 

√: 可能出現    ×: 不會出現高併發

  髒讀 不可重複讀 幻讀
Read uncommitted
Read committed ×
Repeatable read × ×
Serializable × × ×
相關文章
相關標籤/搜索