天天看點

Disruptor底層源碼解析(九)

Disruptor底層源碼解析(九)
Disruptor底層源碼解析(九)
Disruptor底層源碼解析(九)
Disruptor底層源碼解析(九)
Disruptor底層源碼解析(九)
Disruptor底層源碼解析(九)
Disruptor底層源碼解析(九)
Disruptor底層源碼解析(九)

 架構圖:

Disruptor底層源碼解析(九)

性能為什麼這麼牛逼:

Disruptor底層源碼解析(九)
Disruptor底層源碼解析(九)
Disruptor底層源碼解析(九)
Disruptor底層源碼解析(九)
Disruptor底層源碼解析(九)
Disruptor底層源碼解析(九)
Disruptor底層源碼解析(九)
Disruptor底層源碼解析(九)
Disruptor底層源碼解析(九)
Disruptor底層源碼解析(九)
Disruptor底層源碼解析(九)
Disruptor底層源碼解析(九)
Disruptor底層源碼解析(九)
Disruptor底層源碼解析(九)
Disruptor底層源碼解析(九)
Disruptor底層源碼解析(九)
Disruptor底層源碼解析(九)
Disruptor底層源碼解析(九)
Disruptor底層源碼解析(九)
Disruptor底層源碼解析(九)
Disruptor底層源碼解析(九)
Disruptor底層源碼解析(九)
Disruptor底層源碼解析(九)
Disruptor底層源碼解析(九)
Disruptor底層源碼解析(九)
Disruptor底層源碼解析(九)
Disruptor底層源碼解析(九)
Disruptor底層源碼解析(九)
Disruptor底層源碼解析(九)
Disruptor底層源碼解析(九)
Disruptor底層源碼解析(九)
Disruptor底層源碼解析(九)
Disruptor底層源碼解析(九)
Disruptor底層源碼解析(九)
Disruptor底層源碼解析(九)
Disruptor底層源碼解析(九)
Disruptor底層源碼解析(九)
public void sendData(ByteBuffer data) {
    //1 在生産者發送消息的時候, 首先 需要從我們的ringBuffer裡面 擷取一個可用的序号
    long sequence = ringBuffer.next();  //0 
    try {
      //2 根據這個序号, 找到具體的 "OrderEvent" 元素 注意:此時擷取的OrderEvent對象是一個沒有被指派的"空對象"
      OrderEvent event = ringBuffer.get(sequence);
      //3 進行實際的指派處理
      event.setValue(data.getLong(0));      
    } finally {
      //4 送出釋出操作
      ringBuffer.publish(sequence);     
    }
  }      

 

Disruptor底層源碼解析(九)
Disruptor底層源碼解析(九)