java 高併發無鎖框架 Disruptor 系列一

1.介紹:
     高併發無鎖框架,基於生產者與消費者模式。其底層以CAS代替鎖操作(利用sun.misc.Unsafe),以環形緩衝區代替傳統的緩存隊列。
2.核心模型

  • Ring Buffer 數據存儲區域
  • Wait Strategy  等待策略(生產者,與消費者用的是同一種)
        Disruptor自帶實現若干種策略
  •     EventProcessor(實現Runnable接口由線程池處理實現異步)
EventProcessor 持有特定消費者(Consumer)的 Sequence,並提供用於調用事件處理實現的事件循環(Event Loop)。
  •     EventHandler
Disruptor 定義的事件處理接口,由用戶實現,用於處理事件,是 Consumer 的真正實現。
(EventProcessor 控制EventHandler,其關係爲一對一)有幾個EventHandler代表有幾個消費者
  •      Event
在 Disruptor 的語義中,生產者和消費者之間進行交換的數據被稱爲事件(Event)。
  •     Sequencer 
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();


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章