深入理解Apache Mina(5)---- 配置Mina的 线程模型
2009-09-16 00:00:00 来源:WEB开发网为Mina的IoFilterChain添加线程池
在Mina的 API中提供了一个ExecutorFilter,该线程池实现了IoFilter接口,它可以作为一个IoFilter添加到 IoFilterChain中,它的作用就是将I/O Processor中的事件通过其自身封装的一个线程池来转发到下一个过滤器中。在没有添加该线程模型时,I/O Processor的事件是通过方法来触发的,然后转发给IoHandler。在没有添加该线程池的时候,所有的事件都是在单线程模式下运行的,也就是说有的事件和处理(IO Processor,IoHandler,IoFilter)都是运行在同一个线程上,这个线程就是IO Processor的线程,但是这个线程的数量受到CPU核数的影响,因此系统的性能也直接受CPU核数的影响。
比较复杂的应用一般都会用到该线程池,你可以根据你的需求在IoFilterchain中你可以添加任意数量的线程池,这些线程池可以组合成一个事件驱动(SEDA)的处理模型。对于一般的应用来说不是线程的数量越多越好,线程的数量越多可能会加剧CPU切换线程所耗费的时间,反而会影响系统的性能,因此,线程的数量需要根据实际的需要由小到大,逐步添加,知道找到适合你系统的最佳线程的数量。ExcutorFilter的配置过程如下:
Java代码
<span><span style="font-size: small;">SocketAcceptor acceptor = ...;
DefaultIoFilterChainBuilder filterChainBuilder = acceptor.getDefaultConfig().getFilterChain();
filterChainBuilder.addLast("threadPool", new ExecutorFilter(Executors.newCachedThreadPool());
</span></span>
在配置该线程池的时候需要注意的一个问题是,当你使用自定的ProtocolCodecFactory时候一定要将线程池配置在该过滤器之后,如下所示:
- ››apache设置域名绑定 以及绑定不起作用的排查
- ››apache rewrite将指定URL转向指定的几个服务器
- ››apache配置文件httpd.comf部分参数说明
- ››Apache+Mysql+PHP+phpMyAdmin+Mac OS X 10.7 Lion...
- ››深入理解JAR包
- ››apache+tomcat负载均衡_项目实例
- ››apache mysql php 源码编译使用
- ››深入分析Volatile的实现原理
- ››深入理解Flash Player的应用程序域(Application ...
- ››深入理解flash函数(AS2)
- ››Apache添加mod_aspdotnet.so支持ASP.NET配置指南
- ››Apache中改变php.ini的路径
更多精彩
赞助商链接