![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JUC 集合
文章平均质量分 68
oxf
纵有疾风起,人生不言弃
展开
-
02.JUC 集合 - ConcurrentHashMap
基本概念ConcurrentHashMap 采用了分段锁的设计,只有在同一个分段内才存在竞态关系,不同的分段锁之间没有锁竞争。相比于对整个 Map 加锁的设计,分段锁大大的提高了高并发环境下的处理能力。内部构造ConcurrentHashMap 实际上是由多个 Segment(分段)组成, Segment 的内部结构与 HashMap 一样,都是由哈希表构成。因此也可以理解为由多个 “HashMap原创 2017-02-23 12:57:45 · 336 阅读 · 0 评论 -
01.JUC 集合 - CopyOnWriteArrayList
基本概念CopyOnWriteArrayList 的实现原理实际与 ArrayList 大同小异。它们内部都通过维护一个数组来对数据进行操作。不同的是它的处理写操作(包括 add、set、remove)是先将原始的数据通过Arrays.copyof 方法复制生成一份新的数组。然后在新的数据对象上进行写操作,写完后再将原来的引用指向到当前这个数据对象。这样保证了每次写都是在新的对象上。而 ArrayL原创 2017-02-23 11:41:23 · 324 阅读 · 0 评论 -
04.JUC 集合 - ArrayBlockingQueue
基本概念ArrayBlockingQueue 是一个用数组实现的有界阻塞队列。此队列按照先进先出(FIFO)的原则对元素进行排序。默认情况下不保证访问者公平的访问队列,所谓公平访问队列是指阻塞的所有生产者线程或消费者线程,当队列可用时,可以按照阻塞的先后顺序访问队列,即先阻塞的生产者线程,可以先往队列里插入元素,先阻塞的消费者线程,可以先从队列里获取元素。内部构造构造函数,ArrayBlockin原创 2017-02-23 19:19:01 · 378 阅读 · 0 评论 -
05.JUC 集合 - LinkedBlockingQueue
基本概念LinkedBlockingQueue 是一个用链表实现的有界阻塞队列。LinkedBlockingQueue 按照先进先出的原则对元素进行排序。LinkedBlockingQueue 采用了双锁、双条件队列来提高读写效率。内部构造LinkedBlockingQueue 内部维护着一个单向链表,且链表头节点的值永远为空。如下图所示:下面来看它的构成:Node ,节点static clas原创 2017-02-23 19:19:46 · 311 阅读 · 0 评论 -
03.JUC 集合 - BlockingQueue
概念BlockingQueue,即阻塞队列。它是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。阻塞队列常用于生产者和消费者的场景:生产者是往队列里添加元素的线程。消费者是从队列里拿元素的线程。操作阻塞队列提供了四种处理方法: 方法\处理方式 抛出异常 返回特殊值 一直阻塞 超时原创 2017-02-23 22:37:55 · 303 阅读 · 0 评论