Reactor模式

I/O事件驅(qū)動模型。
類似與AWT的Event處理,當(dāng)點擊某個鍵時才會觸發(fā)我們的回掉函數(shù)。
1.Reactor負(fù)責(zé)相應(yīng)I/O事件,一旦發(fā)送,交給相應(yīng)的handler去處理。
2.handler負(fù)責(zé)非阻塞行為,同時負(fù)責(zé)處理函數(shù)與監(jiān)聽事件的綁定。

IN JAVA

JAVA NIO為Reactor提供了基礎(chǔ)的機(jī)制,在Selector中注冊I/O事件,通過select()查詢是否有我們注冊的channel中是否有我們關(guān)注的事情發(fā)生,當(dāng)select()后,可以通過selectedKeys()方法,獲取到發(fā)生事件的selectkeys。

核心代碼

設(shè)置事件和handler綁定;

//設(shè)置不阻塞
serverSocket.configuteBlocking(false);
//注冊關(guān)注的事件到selector
serverSocket.register(selector,SelectionKey.OP_ACCPET);

//輪詢
while(true)
{
  int readys = selector.selector();
  if(readys == 0) continue;
  //分發(fā)事件并處理他
   dispatch( selector.selectedKeys());
}

void  dispatch(Set<SelectionKey>)
{
  Iterator it = selected.iterator();
  while(it.hasNext())
{
  SelectionKey key = it.next();
  //分發(fā)處理Key  
  ......
}  
}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容