java集合的进一步思考

我们都知道数据库的事务级别分为了四种,如本文后面的表格所示,事务隔离级别越高并发性越差但是数据越安全。由此我想到了java里面的集合。举例来说Map接口。

HashMap这个是最基础的Map实现,他不是线程安全的,对应着有点和数据库最低的事务级别相似;

HashTable这个是目前已经废弃或者是官方不在建议使用的类了,因为他虽然是线程安全的但是他的并发性太低了,锁全数组,这个就相当于数据表里面的顺序话吧,太严格了,性能有问题了也不会大规模的推荐;

ConcurrentHashMap如果是多线程用到的话,现在官方推荐的是这个类,这个类把整个数组分成了若干份,每一份单独享用一个自己的锁,这样的话能够大大增加并发数。但是就像Repeatable ready会出现幻读一样,这个类也会出现类似的现象,对于需要检索全数组的情况。

今天做了这个小小的总结对比不知道对不对,欢迎留言讨论

我的博客

 

√: 可能出现    ×: 不会出现

  脏读 不可重复读 幻读
Read uncommitted
Read committed ×
Repeatable read × ×
Serializable × × ×

猜你喜欢

转载自my.oschina.net/u/1455908/blog/842120