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非阻塞編程


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


          網站導航:
           
          主站蜘蛛池模板: 陆良县| 澜沧| 云阳县| 漠河县| 当雄县| 祁门县| 昭苏县| 眉山市| 文登市| 额敏县| 勐海县| 新丰县| 卢龙县| 长丰县| 大洼县| 区。| 桃江县| 昌吉市| 雅安市| 禄劝| 黄石市| 类乌齐县| 桂阳县| 呈贡县| 多伦县| 岳西县| 灌阳县| 贡觉县| 泸州市| 班戈县| 雅安市| 青川县| 黄石市| 松阳县| 突泉县| 华坪县| 治县。| 宣武区| 曲松县| 株洲市| 塔河县|