1.hashmap采用位运算定位数组的下标,因为位运算效率高于模运算
2.hash的数据容量不是2次幂得话,可能造成hash不均匀,一个位置可能永远放不到
1.jdk7版本之前的concurrenthasmap采用seagment分段锁的思想,进行两次hash找到数据存放的位置,但是jdk8之后放弃了分段锁,基本结构与hashmap基本类似,但是采用了锁保证了安全并发,在jdk8中,两种hashmap都会有链表.链表转红黑树阈值8,但是实际长度是9
线程池从阻塞队列取任务,没有任务了则推出循环
为什么上来解锁
1.线程池种类:
1.newFixedTHreadpool:固定数量线程池
2.aqs介绍:
3.如何保证锁可重入:
获取锁的时候会把线城保存下来
判断线城是否是当前线城
4.公平锁实现原理:见测阻塞队列中是否有前驱队列,即有没有在等待的队列,有说明需要等待排队,实现公平原理
5.signal原理:被唤醒后从signal的等待队列放到竞争锁的队列中
6.先获取读锁,又想获取读锁不可以,但是先获取写锁,又想获取读锁,是可以的
7.stampedlock:带有时间戳的锁,可以解决aba问题
8.semaphore:限制能同时访问贡献资源的线程上限