在helloworld的例項中,我們建立disruptor例項,然後呼叫getringbuffer方法去獲取ringbuffer,其實在很多時候,我們可以直接使用ringbuffer,以及其他的api操作。我們一起熟悉下示例:
trade類
public
class trade
public
void
setid(string id)
public string getname()
public
void
setname(string name)
public
double
getprice()
public
void
setprice(double price)
public atomicinteger getcount()
public
void
setcount(atomicinteger count)
}
tradehandler類
public
class tradehandler implements eventhandler,workhandler
@override
public
void
onevent(trade event, long sequence, boolean endofbatch) throws exception
}
eventprocessor訊息處理器類
public
class
main1
}, buffer_size,new yieldingwaitstrategy());
//建立執行緒池
executorservice executors = executors.newfixedthreadpool(thread_numbers);
//建立sequencebarrier
sequencebarrier sequencebarrier = ringbuffer.newbarrier();
//建立訊息處理器
batcheventprocessortransprocessor =
new batcheventprocessor(ringbuffer, sequencebarrier, new tradehandler());
//這一步的目的就是把消費者的位置資訊引用注入到生產者 如果只有乙個消費者的情況可以省略
ringbuffer.addgatingsequences(transprocessor.getsequence());
//把訊息處理器提交到執行緒池
executors.submit(transprocessor);
//執行生產者的工作
//如果存在多個消費者 那重複執行上面的三行** 把tradehandler換成其他消費者
future<?> future = executors.submit(new callable()
return
null;
}});
future.get();//等待生產者結束
thread.sleep(1000);//等待一秒,等待消費都處理結束
transprocessor.halt();//通知事件 或者說處理器可以結束了
executors.shutdown();//終止執行緒
}}
public
class main2
};ringbufferringbuffer = ringbuffer.createsingleproducer(eventfactory, buffer_size);
sequencebarrier sequencebarrier = ringbuffer.newbarrier();
executorservice executor = executors.newfixedthreadpool(thread_size);
workhandlerhandler = new tradehandler();
workerpoolworkerpool = new workerpool(ringbuffer,sequencebarrier,new ignoreexceptionhandler(),handler);
workerpool.start(executor);
//下面這個生產8個資料
for(int i=0;i<8;i++)
thread.sleep(1000);//等待一秒,等待消費都處理結束
workerpool.halt();//通知事件 或者說處理器可以結束了
executor.shutdown();//終止執行緒
}}
物理處理器與邏輯處理器
記錄解決方案,自己實際處理過,方案可用,在自己的部落格中記錄一下。cpu central processing unit 是 處理單元,本文介紹物理cpu,物理cpu核心,邏輯cpu,以及他們三者之間的關係。乙個物理cpu可以有1個或者多個物理核心,乙個物理核心可以作為1個或者2個邏輯cpu。物理c...
處理器核心
處理器核心 cache 寫緩衝器 主存 輔助儲存器 寫操作,對核心而言非迫切,所以加乙個寫緩衝器很好。cache可放在處理器核心與mmu之間 邏輯 cache,主流 也可放在mmu與主存之間 物理 cache 對儲存器中相同或相鄰資料和 的反覆使用,是cache改善效能的主要原因。cache同時使用...
處理器排程
1 cpu排程的相關概念 a.cpu排程 其任務是控制 協調程序對cpu的競爭 即按一定的排程演算法從就緒佇列中選擇乙個程序,把cpu的使用權交給被選中的程序 如果沒有就緒程序,系統會安排乙個系統空閒程序或idle程序 b.cpu要解決的三個問題 cpu排程的時機 就緒佇列的改變引發了重新排程 事件...