disruptor入门例子:
package com.taobao.eagleeye.rt.storm; import java.util.concurrent.ExecutorService; import java.util.concurrent.SynchronousQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; import com.taobao.eagleeye.digest.handler.DigestJob; import com.taobao.eagleeye.digest.handler.DigesterWorkerHanlder; import com.taobao.eagleeye.disruptor.EventHandler; import com.taobao.eagleeye.disruptor.RingBuffer; import com.taobao.eagleeye.disruptor.dsl.Disruptor; import com.taobao.tlog.util.NamedThreadFactory; public class Test { private static final int RING_BUFFER_SIZE = 8; public static void main(String[] args) { ExecutorService es = new ThreadPoolExecutor(0, Integer.MAX_VALUE, 60L, TimeUnit.SECONDS, new SynchronousQueue<Runnable>(),new NamedThreadFactory("disruptor-process")); Disruptor<DigestJob> disruptor = new Disruptor<DigestJob>(DigestJob.EVENT_FACTORY, RING_BUFFER_SIZE, es); DigesterWorkerHanlder[] workers = new DigesterWorkerHanlder[12]; disruptor.handleEventsWith(new EventHandler<DigestJob>() { @Override public void onEvent(DigestJob event, long sequence, boolean endOfBatch) throws Exception { System.out.println("event=" + event); Thread.sleep(10000); } }); RingBuffer<DigestJob> ringBuffer = disruptor.start(); while (true) { long seq = ringBuffer.next(); DigestJob job = ringBuffer.get(seq); job.context = null; ringBuffer.publish(seq); System.out.println("emit..."+seq); try { Thread.sleep(100); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
package com.taobao.tlog.runtime; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.ThreadFactory; import com.google.common.util.concurrent.ThreadFactoryBuilder; import com.taobao.tlog.disruptor.EventFactory; import com.taobao.tlog.disruptor.EventHandler; import com.taobao.tlog.disruptor.RingBuffer; import com.taobao.tlog.disruptor.WorkHandler; import com.taobao.tlog.disruptor.dsl.Disruptor; public class ActorTest { static class ActorHandler implements WorkHandler<String>, EventHandler<String> { @Override public void onEvent(String event, long sequence, boolean endOfBatch) throws Exception { onEvent(event); } @Override public void onEvent(String event) throws Exception { System.out.println(event); throw new RuntimeException("fuck"); } } public static void main(String[] args) { ThreadFactory namedThreadFactory = new ThreadFactoryBuilder().setNameFormat( "Action" + "-thread-%d").build(); EventFactory<String> EVENT_FACTORY = new EventFactory<String>() { @Override public String newInstance() { return new String(); } }; ExecutorService es = Executors.newCachedThreadPool(namedThreadFactory); Disruptor<String> disruptor = new Disruptor<String>(EVENT_FACTORY, 8, es); disruptor.handleEventsWith(new ActorHandler()); RingBuffer<String> ringBuffer = disruptor.start(); long seq = ringBuffer.next(); String k = ringBuffer.get(seq); k = "test"; ringBuffer.publish(seq); } }
相关推荐
从功能上来看,Disruptor 是实现了“队列”的功能,而且是一个有界队列。那么它的应用场景自然就是“生产者-消费者”模型的应用场合了。 可以拿 JDK 的 BlockingQueue 做一个简单对比,以便更好地认识 Disruptor 是...
disruptor笔记之四:事件消费知识点小结(csdn)————程序
Disruptor 简单示例,涵盖多种模型。适合Disruptor 入门学习。
Disruptor3.x Disruptor使用方式 EventHandler[] eventHandlers=new DisruptorEventHandler[]{new DisruptorEventHandler()}; DisruptorPublisher dp=new DisruptorPublisher(1024, eventHandlers); dp.start(); ...
Error: java.lang.NoSuchMethodError: com.lmax.disruptor.dsl.Disruptor.<init>(Lcom/lmax/disruptor/EventFactory;ILjava/util/concurrent/ThreadFactory;Lcom/lmax/disruptor/dsl/ProducerType;Lcom/lmax/...
disruptor-3.4.4.jar 官方github下载 亲测可用,大家赶紧下载吧 后续再补充其他常用jar(但不好下载的)
简单讲解disruptor并附上demo
赠送jar包:disruptor-3.3.0.jar; 赠送原API文档:disruptor-3.3.0-javadoc.jar; 赠送源代码:disruptor-3.3.0-sources.jar; 赠送Maven依赖信息文件:disruptor-3.3.0.pom; 包含翻译后的API文档:disruptor-...
赠送jar包:disruptor-3.3.0.jar; 赠送原API文档:disruptor-3.3.0-javadoc.jar; 赠送源代码:disruptor-3.3.0-sources.jar; 赠送Maven依赖信息文件:disruptor-3.3.0.pom; 包含翻译后的API文档:disruptor-...
Disruptor是一个开源的Java框架,它被设计用于在生产者—消费者(producer-consumer problem,简称PCP)问题上获得尽量高的吞吐量(TPS)和尽量低的延迟。Disruptor是LMAX在线交易平台的关键组成部分,LMAX平台使用...
赠送jar包:disruptor-3.3.7.jar 赠送原API文档:disruptor-3.3.7-javadoc.jar 赠送源代码:disruptor-3.3.7-sources.jar 包含翻译后的API文档:disruptor-3.3.7-javadoc-API文档-中文(简体)-英语-对照版.zip ...
disruptor-3.2.0.jar包下载disruptor-3.2.0.jar包下载disruptor-3.2.0.jar包下载
Disruptor它是一个开源的并发框架能够在无锁的情况下实现网络的Queue并发操作。同时,Disruptor是一个高性能的异步处理框架,或者可以认为是最快的消息框架(轻量的JMS),也可以认为是一个观察者模式的实现,或者...
Disruptor简单使用。完成多线程间并行、等待、先后执行等功能。
业务逻辑处理器的核心是Disruptor。 Disruptor它是一个开源的并发框架,并获得2011 Duke’s 程序框架创新奖,能够在无锁的情况下实现网络的Queue并发操作。 Disruptor是一个高性能的异步处理框架,或者可以认为是最...
Disruptor框架是由LMAX公司开发的一款高效的无锁内存队列。使用无锁的方式实现了一个环形队列。据官方描述,其性能要比BlockingQueue至少高一个数量级。根据GitHub上的最新版本源码打出的包,希望对大家有帮助。
disruptor 多个消费者 但是只消费一次 有时候会有这样的需求
disruptor-3.4.2.jar 工具jar包 及 disruptor-3.4.2-sources.jar, Disruptor它是一个开源的并发框架,并获得2011 Duke’s 程序框架创新奖,能够在无锁的情况下实现网络的Queue并发操作,是 log4j2 引用的 jar 包
2017 Conversant Disruptor - 仍然是世界上最快的入门运行 maven build 来构建和使用包。 $ mvn -U clean package Conversant Disruptor 在 Maven Central 上对于 Java 9 及更高版本: <dependency> <groupId>...
disruptor.jar 2018最新版本(包含disruptor-3.4.1.jar、disruptor-3.4.1-sources.jar、disruptor-3.4.1-javadoc.jar)