JAVA并发容器源码分析【一】开篇

扫码关注公众号:Java 技术驿站

发送:vip
将链接复制到本浏览器,永久解锁本站全部文章

【公众号:Java 技术驿站】 【加作者微信交流技术,拉技术群】

文章首发于:clawhub.club


准备新写个文集《JAVA并发容器源码分析》,套路还是采用:先翻译源码,再分析技术实现。
写几个常用到的并发容器:ConcurrentHashMap、CopyOnWriteArrayList、LinkedBlockingQueue。

并发容器:

是专门针对多线程并发设计的,使用了锁分段技术,只对操作的位置进行同步操作,
但是其他没有操作的位置其他线程仍然可以访问,提高了程序的吞吐量。
采用了CAS算法、部分代码使用synchronized锁保证线程安全。

ConcurrentHashMap

JDK6与JDK7中采用一种更加细粒度的加锁机制Segment“分段锁”,JDK8中采用CAS无锁算法。

CopyOnWriteArrayList

对读操作不加锁,对写操作,先复制一份新的集合,在新的集合上面修改,然后将新集合赋值给旧的引用,
并通过volatile 保证其可见性,写操作的锁采用:ReentrantLock。

LinkedBlockingQueue

通过ReentrantLock实现线程安全,通过Condition实现阻塞和唤醒,基于链表实现的可阻塞的FIFO队列。


来源:https://www.jianshu.com/p/a75d196731c0

赞(2) 打赏
版权归原创作者所有,任何形式的转载请联系博主:daming_90:Java 技术驿站 » JAVA并发容器源码分析【一】开篇

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏