1

我有一个基于 Apache Mina 2.0.4 的应用程序,其中我使用 ExecutorFilter 在 message_received 事件上创建一个线程。

我发现在生产环境中,有时 ExecutorFilter 不会创建线程。相反,它会阻止请求消息。

任何人都可以指导如何正确使用 ExecutorFilter 吗?我预计最多有 100 个同时连接到我的应用程序。

这是我的类,它覆盖 ExecutorFilter 类-

public class OneIExecutorFilter extends ExecutorFilter {

    public OneIExecutorFilter(IoEventType...eventTypes){
        super(eventTypes);
    }

    @Override
    public void sessionCreated(NextFilter nextFilter, IoSession session)
            throws Exception {      
        super.sessionCreated(nextFilter, session);
    }   

    @Override
    protected void fireEvent(IoFilterEvent event) {             
        super.fireEvent(event);     
    }   
}
4

2 回答 2

0

你可能用完了线程。尝试使用设置为超过 100的ExecutorFilter(int maximumPoolSize, IoEventType... eventTypes)构造函数。maximumPoolSize

于 2011-06-28T09:56:09.493 回答
0

您不必以这种方式覆盖 ExecutorFilter。试试这个:

final int min = 1;
final int max = Integer.MAX_VALUE;

// RE: java.util.concurrent.Executors.newCachedThreadPool()
Executor executor = new ThreadPoolExecutor(min, max, 60, TimeUnit.SECONDS, 
    new SynchronousQueue<Runnable>())

ExecutorFilter ef = new ExecutorFilter(executor);
于 2011-07-04T10:31:29.733 回答