Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

Java1234官方群25:java1234官方群17
Java1234官方群25:838462530
        
SpringBoot+SpringSecurity+Vue+ElementPlus权限系统实战课程 震撼发布        

最新Java全栈就业实战课程(免费)

springcloud分布式电商秒杀实战课程

IDEA永久激活

66套java实战课程无套路领取

锋哥开始收Java学员啦!

Python学习路线图

锋哥开始收Java学员啦!
当前位置: 主页 > Java文档 > Java基础相关 >

高性能核心组件之5:JCTool中 Mpsc 架构、源码分析


分享到:
时间:2024-10-31 11:41来源:http://www.java1234.com 作者:转载  侵权举报
高性能核心组件之5:JCTool中 Mpsc 架构、源码分析
失效链接处理
高性能核心组件之5:JCTool中 Mpsc 架构、源码分析  PDF 下载

 
 
相关截图:
 
主要内容:


阻塞队列

阻塞队列在队列为空或者队列满时,都会发生阻塞。阻塞队列自身是线程安全的,使用者无需关心线程 安全问题,降低了多线程开发难度。 阻塞队列主要分为以下几种:

ArrayBlockingQueue: 最基础且开发中最常用的阻塞队列,底层采用数组实现的有界队列,初始化需要指定队列的容量。

ArrayBlockingQueue 是如何保证线程安全的呢? 它内部是使用了一个重入锁 ReentrantLock,并搭配 notEmpty、notFull 两个条件变量 Condition 来控制并发访问。 从队列读取数据时,如果队列为空,那么会阻塞等待,直到队列有数据了才会被唤醒。 如果队列已经满了,也同样会进入阻塞状态,直到队列有空闲才会被唤醒。

LinkedBlockingQueue: 内部采用的数据结构是链表,队列的长度可以是有界或者无界的,初始化不需要指定队列长度,默 认是 Integer.MAX_VALUE。

LinkedBlockingQueue 内部使用了 takeLock、putLock两个重入锁 ReentrantLock,以及 notEmpty、notFull 两个条件变量 Condition 来控制并发访问。 采用读锁和写锁的好处是可以避免读写时相互竞争锁的现象,所以相比于 ArrayBlockingQueue,

LinkedBlockingQueue 的性能要更好。

 


------分隔线----------------------------

锋哥公众号


锋哥微信


关注公众号
【Java资料站】
回复 666
获取 
66套java
从菜鸡到大神
项目实战课程

锋哥推荐