java集合的进一步思考

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

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

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

ConcurrentHashMap若是是多线程用到的话,如今官方推荐的是这个类,这个类把整个数组分红了若干份,每一份单独享用一个本身的锁,这样的话可以大大增长并发数。可是就像Repeatable ready会出现幻读同样,这个类也会出现相似的现象,对于须要检索全数组的状况。安全

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

个人博客并发

 

√: 可能出现    ×: 不会出现高并发

  脏读 不可重复读 幻读
Read uncommitted
Read committed ×
Repeatable read × ×
Serializable × × ×
相关文章
相关标签/搜索