Java NIO线程模型分析--单Reactor多线程

目录

1.线程模型分析:

2.单Reactor多线程工作原理:

 3.优缺点分析:

4.Reactor模式小结:


1.线程模型分析:

永远要记住, Reactor(监听和分发)是通过多路复用器Selector(select,poll,epoll)进行工作的,并且处理的事件中,就是客户端连接(Selection.OP_ACCEPT)和读(Selection.OP_READ)这两种事件。Acceptor(应该就是ServerSocketChannel,或者说肯定主要用到了它,同样也要注册到Selector,专门处理客户端连接事件)负责处理客户端连接事件,Handler其实就是把处理READ事件的操作封装一下。

主从Reactor中的主Reactor(主线程)只处理客户端连接事件,从Reactor(子线程们)只处理read事件。主Reactor处理完连接事件后,生成一个NIOSocketChannel(封装了SocketChannel),然后将其注册到从Reactor的selector中。

三种:

  1. 单Reactor单线程
  2. 单Reactor多线程
  3. 主从Reactor多线程(Netty)

2.单Reactor多线程工作原理:

跟单Reactor单线程相比,多加了一个线程池去处理具体的业务,而不是再由主线程自己负责全部事情,一定程度上提高了并发性能,但由于ReactorDispatch还是在同一个单线程中进行监听和分发,性能还是有限。

Note: 其中的Acceptor应该就是ServerSockerChannel

 3.优缺点分析:

 这里就不提供代码了,因为很好理解。

4.Reactor模式小结:

Netty又进一步进行了功能的增强,可以有多个MainReactor(叫做Boss Group),当然还是多个subReactor,下图是一个最简单的Netty线程模型的工作原理示意图:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值