WEB开发网
开发学院软件开发Java 深入理解Apache Mina(5)---- 配置Mina的 线... 阅读

深入理解Apache Mina(5)---- 配置Mina的 线程模型

 2009-09-16 00:00:00 来源:WEB开发网   
核心提示: 为Mina的IoFilterChain添加线程池在Mina的 API中提供了一个ExecutorFilter,该线程池实现了IoFilter接口,深入理解Apache Mina(5)---- 配置Mina的 线程模型(4),它可以作为一个IoFilter添加到 IoFilterChain中,它的

为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时候一定要将线程池配置在该过滤器之后,如下所示:

上一页  1 2 3 4 5  下一页

Tags:深入 理解 Apache

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接