1、概述java
Reactor反應器模式是一個事件驅動,有一個或多個併發源,有一個業務處理器和多個請求處理器的模式,如圖linux
假設一個場景:併發
長途客車在路途上,有人上車有人下車,可是乘客老是但願可以在客車上獲得休息。spa
傳統的作法是:每隔一段時間(或每個站),司機或售票員對每個乘客詢問是否下車。事件
反應器模式作法是:汽車是乘客訪問的主體(Reactor),乘客上車後,到售票員(acceptor)處登記,以後乘客即可以休息睡覺去了,當到達乘客所要到達的目的地後,售票員將其喚醒便可。鉤子
上類圖,序列圖select
一、初始化一個Reactor,初始化一個Handler到EventHandler的MAP,註冊每個EventHandler在裏面,留個鉤子循環
二、調用時間循環開始監聽,java裏是Selector,linux下select/poll,epoll,FreeBSD的kqueue等請求
三、當監聽到某個事件發生時,select返回,Reactor回調對應的EventHandler處理queue