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

本文深入探讨Apache Mina 1.1.7版本中的线程模型配置,包括Acceptor thread、Connector thread和I/O processor thread。重点介绍了如何配置I/O processor线程数量,以提高性能。线程数量通常基于CPU核心数+1来设置,可以通过SocketAcceptor和SocketConnector构造器进行配置。此外,还提到了ExecutorFilter的使用,用于在IoFilterChain中添加线程池,以实现更复杂的事件驱动处理模型。
摘要由CSDN通过智能技术生成

在Mina的使用中,线程池的配置一个比较关键的环节,同时它也是 Mina性能提高的一个有效的方法,在Mina的2.0以上版本中已经不再需要对Mina线程池的配置了,本系列文章都是基于当前的稳定版本Mina 1.1.7版来进行讲述的,Mina的2.0以上版本现在还都是M(millestone,即里程碑)版的,在1.5版本上2.0M版为稳定版本,但是在 1.5+以上则为非稳定版本,所以,为了更好的进行讨论和学习,还是基于Mina 1.1.7版本进行讨论,如果使用Mina 2.0进行开发要注意JDK的版本问题,当然如果有能力的话也可以自行修改和编译Mina的2.0版本,这里对此就不再多说,使用2.0版本的同学可以不 用理会本文的内容。

 

 

 

上面的内容都是基于Apache Mina提供的文档讲述,如有需要,请自行查找相关资料,在此不再赘述。

下面开始对Mina的线程模型的配置、使用、及ExcutorFilter的基本原理进行简单的讲解。

配置Mina的三种工作线程


在Mina的NIO模式中有三种I/O工作线程(这三种线程模型只在NIO Socket中有效,在NIO数据包和虚拟管道中没有,也不需要配置):
Acceptor thread
该 线程的作用是接收客户端的连接,并将客户端的连接导入到I/O processor线程模型中。所谓的I/O processor线程模型就是Mina的I/O processor thread。Acceptor thread在调用了Acceptor.bind()方法后启动。每个Acceptor只能创建一个Acceptor thread,该线程模型不能配置,它由Mina自身提供。
Connector thread
该线程模型是客户端的连接线程模型,它的作用和Acceptor thread类似,它将客户端与服务器的连接导入到I/O processor线程模型中。同样地,该线程模型也是由Mina的客户端自动创建,该线程模型也不能进行配置。
I/O processor thread
该 线程模型的主要作用就行接收和发送数据,所有的IO操作在服务器与客户端的连接建立后,所有的数据的接收和发送都是有该线程模型来负责的,知道客户端与服 务器的连接关闭,该线程模型才停止工作。该线程模型可以由程序员根据需要进行配置。该线程模型默认的线程的数量为cpu的核数+1。若你的cpu为双核 的,则你的I/O processor 线程的最大数量为3,同理若你的若你的cpu为四核的,那么你的I/O processor 线程的最大数量为5。

由 上面的内容我们可以知道在Mina中可以配置的线程数量只有I/O processor,对于每个IoService再创建其实例的时候可以配置该IoService的I/O processor的线程数量。在SokcetConnector和SocketAccpetor中I/O Processor的数量是由CPU的核数+1来决定的。

他们的配置方式如下:  

Java代码
  1. <span><span style="font-size: small;" >        /***  
  2.          * 配置SocketAcceptor监听器的I/O Processor的线程的数量,  
  3.          * 此处的I/O Processor的线程数量由CPU的核数决定,但Acceptor  
  4.          * 的线程数量只有一个,也就是接收客户端连接的线程数只有一个,  
  5.          * Acceptor的线程数量不能配置。  
  6.          * */   
  7.         SocketAcceptor acceptor = new  SocketAcceptor(Runtime.getRuntime()  
  8.                 .availableProcessors() + 1 , Executors.newCachedThreadPool());  
  9.   
  10.         /***  
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值