`
yanbingwei
  • 浏览: 1928 次
  • 性别: Icon_minigender_1
  • 来自: ...
社区版块
存档分类
最新评论

Disruptor3.2官方例子测试

阅读更多
事件对象:
/**
* POJO
* @author lenovoe
*
*/
public class ValueEvent {
private long value;

    public long getValue()
    {
        return value;
    }
    public void setValue(final long value)
    {
        this.value = value;
    }
    public final static EventFactory<ValueEvent> EVENT_FACTORY = new EventFactory<ValueEvent>()
    {
        public ValueEvent newInstance()
        {
            return new ValueEvent();
        }
    };
}

事件生产者:
/**
* 生产者
* @author lenovoe
*
*/
public class Producer implements Runnable{
private RingBuffer<ValueEvent> ringBuffer = null;
public Producer(RingBuffer<ValueEvent> rb) {
ringBuffer = rb;
}
public void run() {
// Publishers claim events in sequence
long sequence = ringBuffer.next();
ValueEvent event = ringBuffer.get(sequence);
event.setValue(1234); // this could be more complex with multiple fields
// make the event available to EventProcessors
ringBuffer.publish(sequence); 
}
}

事件消费者:
/**
* 处理RingBuffer中的事件对象
* @author lenovoe
*
*/
public class ConsumeEventHandler implements EventHandler<ValueEvent>,LifecycleAware{
public void onEvent(ValueEvent event, long sequence, boolean endOfBatch) throws Exception {
// TODO Auto-generated method stub
System.out.println("处理事件对象:"+event.getValue());
//Thread.sleep(2000);
}

public void onStart() {
// TODO Auto-generated method stub
System.out.println("开始处理事件");
}

public void onShutdown() {
// TODO Auto-generated method stub
System.out.println("结束处理事件");
}
}

测试类:
/**
* 测试类
* @author lenovoe
*
*/
public class TestShow {
//number of elements to create within the ring buffer
private static final int BUFFER_SIZE = 16;
//JDK 创建一个使用单个 worker 线程的 Executor,以无界队列方式来运行该线程。
private final ExecutorService EXECUTOR = Executors .newSingleThreadExecutor();
//单生产者,策略使用YieldingWaitStrategy
private final RingBuffer<ValueEvent> ringBuffer = RingBuffer.create(ProducerType.SINGLE, ValueEvent.EVENT_FACTORY, BUFFER_SIZE, new YieldingWaitStrategy());
//游标
private final SequenceBarrier sequenceBarrier = ringBuffer.newBarrier();
//消费者
private final ConsumeEventHandler handler = new ConsumeEventHandler();
private final BatchEventProcessor<ValueEvent> batchEventProcessor = new BatchEventProcessor<ValueEvent>(
ringBuffer, sequenceBarrier, handler);

public TestShow() {
ringBuffer.addGatingSequences(batchEventProcessor.getSequence());
//2X版本:ringBuffer.setGatingSequences(batchEventProcessor.getSequence());
}

public void consume() {
EXECUTOR.submit(batchEventProcessor);
}
public void produce() {
new Thread(new Producer(ringBuffer)).start();
}
public void shutdown() {
EXECUTOR.shutdown();
}

public static void main(String[] args) throws InterruptedException {
TestShow test = new TestShow();
test.produce();
test.produce();
test.produce();
test.consume();
test.shutdown();
Thread.sleep(5000);
System.exit(0);
}

}
分享到:
评论

相关推荐

    disruptor-3.4.4.jar disruptor 3.4.4 jar 官方github下载

    disruptor-3.4.4.jar 官方github下载 亲测可用,大家赶紧下载吧 后续再补充其他常用jar(但不好下载的)

    disruptor-3.3.0-API文档-中英对照版.zip

    赠送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-...

    Disruptor3.x Disruptor使用方式

    Disruptor3.x Disruptor使用方式 EventHandler[] eventHandlers=new DisruptorEventHandler[]{new DisruptorEventHandler()}; DisruptorPublisher dp=new DisruptorPublisher(1024, eventHandlers); dp.start(); ...

    Disruptor应用实例

    NULL 博文链接:https://bijian1013.iteye.com/blog/2435671

    spring集成disruptor

    网上关于Disruptor的例子大部份是旧版本的, 其中集成spring的更少, 只好自已写个新版本简单的demo了。 该demo利用spring的定时器往Disruptor添加数据, 希望该demo能帮助到大家。

    disruptor-3.3.8.jar

    Error: java.lang.NoSuchMethodError: com.lmax.disruptor.dsl.Disruptor.&lt;init&gt;(Lcom/lmax/disruptor/EventFactory;ILjava/util/concurrent/ThreadFactory;Lcom/lmax/disruptor/dsl/ProducerType;Lcom/lmax/...

    disruptor jar包+Demo+Api

    disruptor 的jar包和api 自带了一个简单的例子。带注释 不是官方的例子。 不过是转别人的。 看了之后很容易明白。

    disruptor-3.3.0-API文档-中文版.zip

    赠送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 入门 - v1.0

    从功能上来看,Disruptor 是实现了“队列”的功能,而且是一个有界队列。那么它的应用场景自然就是“生产者-消费者”模型的应用场合了。 可以拿 JDK 的 BlockingQueue 做一个简单对比,以便更好地认识 Disruptor 是...

    disruptor案例加简单说明

    简单讲解disruptor并附上demo

    Disruptor C++版(仅支持单生产者)

    Disruptor C++版,本人已在windows下成功使用,参照例子使用即可。

    disruptror的jar包和例子

    disruptor3.3.2的jar包 和一个简单实用disruptor的例子

    LMAX-Disruptor框架jar包

    Disruptor框架是由LMAX公司开发的一款高效的无锁内存队列。使用无锁的方式实现了一个环形队列。据官方描述,其性能要比BlockingQueue至少高一个数量级。根据GitHub上的最新版本源码打出的包,希望对大家有帮助。

    Disruptor资料合集

    Disruptor是一个开源的Java框架,它被设计用于在生产者—消费者(producer-consumer problem,简称PCP)问题上获得尽量高的吞吐量(TPS)和尽量低的延迟。Disruptor是LMAX在线交易平台的关键组成部分,LMAX平台使用...

    disruptor-3.3.7-API文档-中英对照版.zip

    赠送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-3.2.0.jar包下载

    disruptor框架案例.rar

    Disruptor它是一个开源的并发框架能够在无锁的情况下实现网络的Queue并发操作。同时,Disruptor是一个高性能的异步处理框架,或者可以认为是最快的消息框架(轻量的JMS),也可以认为是一个观察者模式的实现,或者...

    Disruptor示例

    业务逻辑处理器的核心是Disruptor。 Disruptor它是一个开源的并发框架,并获得2011 Duke’s 程序框架创新奖,能够在无锁的情况下实现网络的Queue并发操作。 Disruptor是一个高性能的异步处理框架,或者可以认为是最...

    Disruptor demo

    Disruptor简单使用。完成多线程间并行、等待、先后执行等功能。

Global site tag (gtag.js) - Google Analytics