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
當然還需要覆蓋相應的事件處理方法 如上所示