csusky

          常用鏈接

          統計

          最新評論

          ExecutorFilter

          1 . 用Executors構造一個新的線程池
          ExecutorService executor = Executors.newCachedThreadPool();

          方法 newCachedThreadPool();
          創建一個可根據需要創建新線程的線程池,但是在以前構造的線程可用時將重用它們,并在需要時使用提供的 ThreadFactory 創建新線程。
          2. 用構造的線程池創建ExecutorFilter
          ExecutorFilter es= new ExecutorFilter(executor));

          在ExecutorFilter內部:
          只需要將相應的事件分發到到線程池的相應線程即可,但是SessionCreated事件只能在主線程中,不能分發
          觸發方法
          1 .
          首先構造一個IoFilterEvent,這個IoFilterEvent包含1、事件的類型,2、下一個過濾器
          然后觸發該時間的處理方法。
           if (eventTypes.contains(IoEventType.SESSION_OPENED)) {
                      fireEvent(
          new IoFilterEvent(nextFilter, IoEventType.SESSION_OPENED,
                              session, 
          null));
                  }

          2 .
          從線程池中取出一個線程執行事件處理
          protected void fireEvent(IoFilterEvent event) {
                  getExecutor().execute(event);
              }


          在構造ExecutorFilter 時如果沒有傳入IoEventType則默認只對如下幾種幾件感興趣
          EXCEPTION_CAUGHT
          MESSAGE_RECEIVED
          MESSAGE_SENT
          SESSION_CLOSED
          SESSION_IDLE
          SESSION_OPENED
          當然還需要覆蓋相應的事件處理方法 如上所示

          posted on 2008-12-12 11:33 曉宇 閱讀(1560) 評論(0)  編輯  收藏 所屬分類: JAVA非阻塞編程


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 汉阴县| 佛教| 威宁| 宝鸡市| 登封市| 沙田区| 利辛县| 萝北县| 永兴县| 荥阳市| 古交市| 黄平县| 韩城市| 安福县| 偏关县| 宜君县| 衡南县| 景宁| 漯河市| 深水埗区| 通山县| 工布江达县| 平安县| 安徽省| 通海县| 彰化县| 武宁县| 三穗县| 洛隆县| 灵武市| 沧源| 五家渠市| 新巴尔虎左旗| 罗定市| 凤冈县| 荔浦县| 合川市| 玉山县| 本溪市| 腾冲县| 潢川县|