csusky

          常用鏈接

          統(tǒng)計

          最新評論

          ExecutorFilter

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

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

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

          2 .
          從線程池中取出一個線程執(zhí)行事件處理
          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 曉宇 閱讀(1566) 評論(0)  編輯  收藏 所屬分類: JAVA非阻塞編程


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


          網站導航:
           
          主站蜘蛛池模板: 武强县| 平昌县| 新乡县| 商南县| 体育| 新宾| 铜山县| 莱阳市| 金堂县| 嵊泗县| 邵东县| 仲巴县| 延长县| 涿州市| 隆化县| 永州市| 射洪县| 龙里县| 洛隆县| 娄底市| 资中县| 江阴市| 正镶白旗| 昔阳县| 绵竹市| 白玉县| 玉环县| 浮山县| 铜梁县| 彰武县| 安龙县| 炎陵县| 河北区| 项城市| 遵化市| 桐庐县| 竹山县| 龙川县| 黄陵县| 贡嘎县| 蒙自县|