我有一个基于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);
}
}发布于 2011-06-28 17:56:09
你的线程可能快用完了。尝试在maximumPoolSize设置为大于100的情况下使用ExecutorFilter(int maximumPoolSize, IoEventType... eventTypes)构造函数。
发布于 2011-07-04 18:31:30
您不必以这种方式覆盖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);https://stackoverflow.com/questions/6501465
复制相似问题