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 曉宇 閱讀(1566) 評論(0)  編輯  收藏 所屬分類: JAVA非阻塞編程


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


          網站導航:
           
          主站蜘蛛池模板: 铅山县| 中方县| 邻水| 新疆| 霍州市| 杭锦后旗| 嘉兴市| 达州市| 拜城县| 商河县| 鄂州市| 江城| 乌兰浩特市| 芮城县| 达拉特旗| 鹤壁市| 铅山县| 江山市| 龙口市| 德兴市| 阿尔山市| 临漳县| 富顺县| 肥东县| 花莲县| 会昌县| 玛多县| 岱山县| 犍为县| 曲阳县| 龙川县| 洛浦县| 上高县| 惠州市| 通道| 高邮市| 潢川县| 双流县| 类乌齐县| 盐山县| 邢台市|