咱们都知道数据库的事务级别分为了四种,如本文后面的表格所示,事务隔离级别越高并发性越差可是数据越安全。由此我想到了java里面的集合。举例来讲Map接口。java
HashMap这个是最基础的Map实现,他不是线程安全的,对应着有点和数据库最低的事务级别类似;数据库
HashTable这个是目前已经废弃或者是官方不在建议使用的类了,由于他虽然是线程安全的可是他的并发性过低了,锁全数组,这个就至关于数据表里面的顺序话吧,太严格了,性能有问题了也不会大规模的推荐;数组
ConcurrentHashMap若是是多线程用到的话,如今官方推荐的是这个类,这个类把整个数组分红了若干份,每一份单独享用一个本身的锁,这样的话可以大大增长并发数。可是就像Repeatable ready会出现幻读同样,这个类也会出现相似的现象,对于须要检索全数组的状况。安全
今天作了这个小小的总结对比不知道对不对,欢迎留言讨论多线程
个人博客并发
√: 可能出现 ×: 不会出现高并发
脏读 | 不可重复读 | 幻读 | |
Read uncommitted | √ | √ | √ |
Read committed | × | √ | √ |
Repeatable read | × | × | √ |
Serializable | × | × | × |