ConcurrentHashMap
HashMap线程不安全它的put会导致死循环。
ConcurrentHashMap的结构
分段,写时给段加锁,而不是给整个对象加锁,每一段也是链表数组。
线程安全的队列
实现线程安全的队列有两种方式:阻塞算法和非阻塞算法。
阻塞算法:阻塞队列使用一个锁的两个Condition作为等待队列
- 支持阻塞的插入方法:一个notfull的condition,等待线程不为满然后插入
- 支持阻塞的移除方法:一个notEmpty的condition,等待队列不为空然后移除
非阻塞算法:CAS实现入队出队
ConcurrentLinkedQueue获取尾队列,然后CAS设置。