咱們都知道數據庫的事務級別分爲了四種,如本文後面的表格所示,事務隔離級別越高併發性越差可是數據越安全。由此我想到了java裏面的集合。舉例來講Map接口。java
HashMap這個是最基礎的Map實現,他不是線程安全的,對應着有點和數據庫最低的事務級別類似;數據庫
HashTable這個是目前已經廢棄或者是官方不在建議使用的類了,由於他雖然是線程安全的可是他的併發性過低了,鎖全數組,這個就至關於數據表裏面的順序話吧,太嚴格了,性能有問題了也不會大規模的推薦;數組
ConcurrentHashMap若是是多線程用到的話,如今官方推薦的是這個類,這個類把整個數組分紅了若干份,每一份單獨享用一個本身的鎖,這樣的話可以大大增長併發數。可是就像Repeatable ready會出現幻讀同樣,這個類也會出現相似的現象,對於須要檢索全數組的狀況。安全
今天作了這個小小的總結對比不知道對不對,歡迎留言討論多線程
個人博客併發
√: 可能出現 ×: 不會出現高併發
髒讀 | 不可重複讀 | 幻讀 | |
Read uncommitted | √ | √ | √ |
Read committed | × | √ | √ |
Repeatable read | × | × | √ |
Serializable | × | × | × |