什么是事务
- 事务是一组逻辑上的操作,要么都执行,要么都不执行
- 事务能否生效需要数据库引擎的支持,比如常用的 MySQL 数据库默认使用支持事务的innodb引擎。但是,如果把数据库引擎变为 myisam,那么程序也就不再支持事务了。
Java 7 中 ConcurrentHashMap 的存储结构如上图,ConcurrnetHashMap 由很多个 Segment 组合,而每一个 Segment 是一个类似于 HashMap 的结构,所以每一个 HashMap 的内部可以进行扩容。但是 Segment 的个数一旦初始化就不能改变,默认 Segment 的个数是 16 个,你也可以认为 ConcurrentHashMap 默认支持最多 16 个线程并发。
因为主要说的是1.8版本中的实现。而1.8中HashMap是数组+链表+红黑树实现的,大概如下图所示。后面还是主要介绍Hash Map中主要的一些成员以及方法原理。
hashMap底层数据结构是数组 + 单链表,对 key 计算 hashCode 散列到数组中, 相同的 hashCode 的 key 添加到同一个链表中。
1 | class YieldLock { |