[size=medium]Disruptor类是启动类.我们可以通过类似这样构造一个Disruptor对象
ExecutorService exec = Executors.newCachedThreadPool();
Disruptor<ValueEvent> disruptor = new Disruptor<ValueEvent>(ValueEvent.EVENT_FACTORY, 2, exec);
参数解释:
EventFactory 生成Event的工厂,Event就是我们前面说的芝麻.消费者可以通过onEvent方法来处理拿到的芝麻
第二个参数是个数字,这个是生产者和消费者共同使用的数组的大小.
第三个是线程池,消费者是在线程池中启动的.
start方法是启动
shutdown方法是停止生产者使用.
生成者和Disruptor关联起来.
生成者是要首先占位置的,这个位置是通过ringBuffer的next实现的.
生成者ok之后是通过ringBuffer的publish标志那个位置对于消费者可用的.
而ringBuffer的产生就是由Disruptor的start生成的.
消费者和Disruptor关联起来.
首先消费者必须告诉Disruptor如何处理生产者留下了来的任务.说白了就是定义个有onEvent方法的EventHandler类.Disruptor通过handleEventsWith方法来接受EventHandler类.
在Disruptor中sequencer是生产者,consumer是消费者.表示位置信息的类是Sequence
这个时候生成者和消费者看上去 是没有关系的,但是他们都和Disruptor有关系.来看看Disruptor是如何做桥梁的吧.
生成者和消费者要的都只是对方的位置信息.
生成者获取消费者的位置信息
消费者的信息都会写到Disruptor的consumerRepository中去,[/size]
public RingBuffer<T> start()
{
Sequence[] gatingSequences = consumerRepository.getLastSequenceInChain(true);
ringBuffer.addGatingSequences(gatingSequences);
getLastSequenceInChain就是获取所有消费者的位置信息.
ringBuffer.addGatingSequences就是把消费者的位置信息引用注入到生产者.
消费者获取生成者的位置信息
消费者是通过SequenceBarrier来管理位置信息的,
final SequenceBarrier barrier = ringBuffer.newBarrier(barrierSequences);
ringBuffer中有生产者的位置信息,存在sequencer中,
这样 SequenceBarrier的cursorSequence就是生产者的位置信息.
分享到:
相关推荐
Storm是一个开源的分布式实时计算系统,它是由Nathan Marz等人在Twitter工作期间开发的。...通过深入分析这些知识点,可以加深对Storm源码的理解,并且帮助编程人员提高解决实时大数据分析问题的能力。
从提供的文件内容来看,这段文档是对Apache Storm分布式实时计算系统的源码分析笔记。尽管文档内容有OCR技术原因导致的错误和漏识别,但我们可以从中提取出一些关键知识点进行详细阐述。 标题“spark官方文档”似乎...
12.2.2 HttpClient连接池源码分析 240 12.2.3 HttpClient 4.2.3配置 241 12.2.4 问题示例 243 12.3 线程池 244 12.3.1 Java线程池 245 12.3.2 Tomcat线程池配置 248 13 异步并发实战 250 13.1 同步阻塞调用 251 13.2...
MPMC模型的关键在于其并发控制策略,通常会用到高级的同步原语,如Java的`java.util.concurrent.atomic`包中的原子类,或者更复杂的自旋锁、信号量等。这些同步机制确保了在多线程环境下的数据一致性,防止了数据...
嵌入式八股文面试题库资料知识宝典-华为的面试试题.zip
训练导控系统设计.pdf
嵌入式八股文面试题库资料知识宝典-网络编程.zip
人脸转正GAN模型的高效压缩.pdf
少儿编程scratch项目源代码文件案例素材-几何冲刺 转瞬即逝.zip
少儿编程scratch项目源代码文件案例素材-鸡蛋.zip
嵌入式系统_USB设备枚举与HID通信_CH559单片机USB主机键盘鼠标复合设备控制_基于CH559单片机的USB主机模式设备枚举与键盘鼠标数据收发系统支持复合设备识别与HID
嵌入式八股文面试题库资料知识宝典-linux常见面试题.zip
面向智慧工地的压力机在线数据的预警应用开发.pdf
基于Unity3D的鱼类运动行为可视化研究.pdf
少儿编程scratch项目源代码文件案例素材-霍格沃茨魔法学校.zip
少儿编程scratch项目源代码文件案例素材-金币冲刺.zip
内容概要:本文深入探讨了HarmonyOS编译构建子系统的作用及其技术细节。作为鸿蒙操作系统背后的关键技术之一,编译构建子系统通过GN和Ninja工具实现了高效的源代码到机器代码的转换,确保了系统的稳定性和性能优化。该系统不仅支持多系统版本构建、芯片厂商定制,还具备强大的调试与维护能力。其高效编译速度、灵活性和可扩展性使其在华为设备和其他智能终端中发挥了重要作用。文章还比较了HarmonyOS编译构建子系统与安卓和iOS编译系统的异同,并展望了其未来的发展趋势和技术演进方向。; 适合人群:对操作系统底层技术感兴趣的开发者、工程师和技术爱好者。; 使用场景及目标:①了解HarmonyOS编译构建子系统的基本概念和工作原理;②掌握其在不同设备上的应用和优化策略;③对比HarmonyOS与安卓、iOS编译系统的差异;④探索其未来发展方向和技术演进路径。; 其他说明:本文详细介绍了HarmonyOS编译构建子系统的架构设计、核心功能和实际应用案例,强调了其在万物互联时代的重要性和潜力。阅读时建议重点关注编译构建子系统的独特优势及其对鸿蒙生态系统的深远影响。
嵌入式八股文面试题库资料知识宝典-奇虎360 2015校园招聘C++研发工程师笔试题.zip
嵌入式八股文面试题库资料知识宝典-腾讯2014校园招聘C语言笔试题(附答案).zip
双种群变异策略改进RWCE算法优化换热网络.pdf