(LMAX disruptor)如何自己获取数据而不是回调?

(LMAX disruptor)How to get data by myself not by callback?

我了解到 LMAX disruptor 是一个高性能的线程间消息传递库。 但是当我尝试使用它时,我发现事件处理程序使用回调方法来处理数据。

void onEvent(T event,
       long sequence,
       boolean endOfBatch)
         throws java.lang.Exception

当发布者向 RingBuffer 发布事件时调用

但是如果不使用callback获取数据,自己写while(true)获取数据,怎么办?

谢谢!

您应该编写回调,以便将事件推送到队列中。然后您可以遍历队列。

Queue<Event> queue = new ArrayBlockingQueue(10);

void onEvent(Event event,
        long sequence,
        boolean endOfBatch)
        throws java.lang.Exception {
    queue.add(event);
}

public void test() {
    for ( Event event : queue ) {
        // Your stuff here.
    }
}