ConcurrentHashMap
这个我在 Map & Set 源码分析 中已经非常详细的讲过了,这里就直接略过了…
CopyOnWriteArrayList
吖!这个更简单哈哈哈,其实也就是读不加锁,写加个锁,写的时候由于是先复制一遍,然后再写回到原数组,所以存在读写的弱一致性,也就是说读到的数据可能不会是最新的。
BlockingQueue
阻塞队列(BlockingQueue)被广泛使用在“生产者-消费者”问题中,其原因是 BlockingQueue 提供了可阻塞的插入和移除的方法。当队列容器已满,生产者线程会被阻塞,直到队列未满;当队列容器为空时,消费者线程会被阻塞,直至队列非空时为止。其实就是封装了我在 Condition 那一块举的例子。相比于平常的 Queue(),就是在入队出队封装了下 Condition,也就是 put() 和 take() 「入队和出队」。
ArrayBlockingQueue & LinkedBlockingQueue
挺简单的…没啥讲的。