1.介紹:
高併發無鎖框架,基於生產者與消費者模式。其底層以CAS代替鎖操作(利用sun.misc.Unsafe),以環形緩衝區代替傳統的緩存隊列。
2.核心模型
- Ring Buffer 數據存儲區域
- Wait Strategy 等待策略(生產者,與消費者用的是同一種)
Disruptor自帶實現若干種策略
- EventProcessor(實現Runnable接口由線程池處理實現異步)
EventProcessor 持有特定消費者(Consumer)的 Sequence,並提供用於調用事件處理實現的事件循環(Event Loop)。
Disruptor 定義的事件處理接口,由用戶實現,用於處理事件,是 Consumer 的真正實現。
(EventProcessor 控制EventHandler,其關係爲一對一)有幾個EventHandler代表有幾個消費者
在 Disruptor 的語義中,生產者和消費者之間進行交換的數據被稱爲事件(Event)。
Sequencer 是 Disruptor 的真正核心。有兩個實現SingleProducerSequencer(單個生產者模式)、MultiProducerSequencer(多個生產者)。
- Sequence Barrier(協調生產與消費關係)
待解決:
多個消費者處理可設置先後處理順序(形成依賴,類似工作流),源碼尚未讀懂。
Disruptor<TradeTransaction> disruptor = new Disruptor<TradeTransaction>(new EventFactory<TradeTransaction>() {
public TradeTransaction newInstance() {
System.out.println("初始化====");
return new TradeTransaction();
}
}, 2, Executors.newSingleThreadExecutor(),ProducerType.SINGLE,new BusySpinWaitStrategy());
disruptor.handleEventsWith(new MyEventHandle());
disruptor.start();