public class DisruptorExample {
public static void main(String[] args) {
EventFactory<Trade> eventFactory = Trade::new;
int bufferSize = 1024;
Disruptor<Trade> disruptor = new Disruptor<>(eventFactory, bufferSize, Executors.defaultThreadFactory());
EventHandler<Trade> consumer = (event, sequence, endOfBatch) -> System.out.println("Consuming event: " + event);
disruptor.handleEventsWith(consumer);
disruptor.start();
RingBuffer<Trade> ringBuffer = disruptor.getRingBuffer();
for (int i = 0; i < 10; i++) {
long sequence = ringBuffer.next();
Trade trade = ringBuffer.get(sequence);
trade.setPrice(Math.random() * 100);
ringBuffer.publish(sequence);
}
disruptor.shutdown();
}
}