Disruptor-07 中有哪些代码范例
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章将为大家详细讲解有关Disruptor-07 中有哪些代码范例,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。public class Test
千家信息网最后更新 2026年11月03日Disruptor-07 中有哪些代码范例
这篇文章将为大家详细讲解有关Disruptor-07 中有哪些代码范例,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
public class Test { private static Logger logger = LogManager.getLogger(); @SuppressWarnings("unchecked") public static void main(String[] args) throws InterruptedException { // The factory for the event TestEventFactory factory = new TestEventFactory(); // Specify the size of the ring buffer, must be power of 2. int bufferSize = 1024; // Construct the Disruptor Disruptor disruptor = new Disruptor(factory, bufferSize, DaemonThreadFactory.INSTANCE, ProducerType.SINGLE, new BlockingWaitStrategy()); // Create EventHandler TestEventHandler handler1 = new TestEventHandler("handler1"); TestEventHandler handler2 = new TestEventHandler("handler2"); TestEventHandler handler3 = new TestEventHandler("handler3"); TestEventHandler handler4 = new TestEventHandler("handler4"); // Connect the handler int count = 100; // Unicast采取WorkPool方式,3个WorkHandler 累计执行100次。 // Event到达时,哪个WorkHandler被调度不确定。 // disruptor.handleEventsWithWorkerPool(handler1, handler2, handler3); // MulticastTest并发处理方式,3个EventHandler,各执行100次,累计300次; // 每个Event到达时,EventHandler的处理顺序不确定。 // 并发( handler1, handler2, handler3) // EventHandler:handler1--85:k-v // EventHandler:handler3--85:k-v // EventHandler:handler2--85:k-v // EventHandler:handler1--86:k-v // EventHandler:handler3--86:k-v // EventHandler:handler2--86:k-v <-----并发顺序不确定 // EventHandler:handler2--87:k-v <-----并发顺序不确定 // EventHandler:handler1--87:k-v // EventHandler:handler3--87:k-v // EventHandler:handler3--88:k-v // EventHandler:handler2--88:k-v // EventHandler:handler1--88:k-v // disruptor.handleEventsWith(handler1, handler2, handler3); // Pipeline串行处理方式,3个EventHandler,各执行100次,累计300次。 // 每个Event到达时,EventHandler的处理顺序与handleEventsWith的顺序一致。 // 顺序:handler1->handler2->handler3 // EventHandler:handler1--97:k-v // EventHandler:handler2--97:k-v // EventHandler:handler3--97:k-v // EventHandler:handler1--98:k-v // EventHandler:handler2--98:k-v // EventHandler:handler3--98:k-v // EventHandler:handler1--99:k-v // EventHandler:handler2--99:k-v // EventHandler:handler3--99:k-v // EventHandler:handler1--100:k-v // EventHandler:handler2--100:k-v // EventHandler:handler3--100:k-v //disruptor.handleEventsWith(handler1).handleEventsWith(handler2).handleEventsWith(handler3); //Diamond //按照 handler1-> 并发(handler2, hander3) ->handler4 调度 disruptor.handleEventsWith(handler1).handleEventsWith(handler2,handler3).handleEventsWith(handler4); // Start the Disruptor, starts all threads running disruptor.start(); // Get the ring buffer from the Disruptor to be used for publishing. RingBuffer ringBuffer = disruptor.getRingBuffer(); TestEventProducer producer = new TestEventProducer(ringBuffer); for (int i = 1; i <= count; i++) { producer.onEvent("k", "v"); Thread.sleep(100); } Thread.sleep(10000); }} public class TestEvent implements Event { private String key; private String value; public String getKey() { return key; } public void setKey(String key) { this.key = key; } public String getValue() { return value; } public void setValue(String value) { this.value = value; }}package com.lands.disruptor.unicast;import com.lmax.disruptor.EventFactory;public class TestEventFactory implements EventFactory{ public TestEvent newInstance() { return new TestEvent(); }}
package com.lands.disruptor.unicast;import java.util.concurrent.atomic.AtomicInteger;import org.apache.logging.log4j.LogManager;import org.apache.logging.log4j.Logger;import com.lmax.disruptor.EventHandler;import com.lmax.disruptor.WorkHandler;public class TestEventHandler implements EventHandler, WorkHandler { private static Logger logger = LogManager.getLogger(); private String handlerName; private AtomicInteger count = new AtomicInteger(); public TestEventHandler(String name) { this.handlerName = name; } public String getHandlerName() { return handlerName; } public void onEvent(TestEvent event) throws Exception { logger.info("WorkHandler:" + this.handlerName + "-" + count.decrementAndGet() + ":" + event.getKey() + "-" + event.getValue()); //Thread.sleep(100); } public void onEvent(TestEvent event, long sequence, boolean endOfBatch) throws Exception { logger.info("EventHandler:" + this.handlerName + "-" + count.decrementAndGet() + ":" + event.getKey() + "-" + event.getValue()); //Thread.sleep(100); }}
package com.lands.disruptor.unicast;import com.lands.disruptor.EventProducer;import com.lmax.disruptor.RingBuffer;public class TestEventProducer extends EventProducer{ public TestEventProducer(RingBuffer ringBuffer) { super(ringBuffer); } @Override public void process(TestEvent event, String... data) { event.setKey(data[0]); event.setValue(data[1]); }}
关于Disruptor-07 中有哪些代码范例就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
代码
范例
内容
文章
方式
更多
知识
篇文章
顺序
处理
调度
不错
质量
参考
帮助
有关
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网通讯科技
涨乐互联网科技
科技互联网技术
深圳互联网科技公司
智慧科技互联网
广西互联网科技公司
互联网科技汛
互联网科技股有哪些
佩信高科技互联网
中盈科技互联网信息有限公司
成都互联网科技公司100强
武汉健翔互联网络科技有限公司
电子科技大学互联网创业大赛
广州新华互联网科技学校电竞方面
长沙茂晟互联网科技有限公司
山东星卡互联网科技有限公司官网
广州千川互联网科技有限公司
互联网科技创业有什么好项目
如何强化互联网金融科技
小牛互联网科技有限公司地址
什么是科技互联网
互联网金融与金融科技
贷财互联网科技
中国科技互联网公司收入
昭通云南众福互联网科技有限公司
中化能源互联网科技招聘
华中科技大学互联网的牛人
美国互联网科技公司
互联网与数字科技关系
恒生科技互联网指数十大成分股