一、Netty
1. Netty的线程模型
netty通过Reactor模型基于多路复用器接收并处理用户请求,这个Reactor模型分为三种:
第一种是Reactor单线程模型,它是使用一个线程来处理客户端的连接和IO处理
第二种是Reactor多线程模型,他使用一个Acceptor线程来处理客户端的连接,并使用线程池来处理Handler的IO操作
第三种是Reactor主从多线程模型,这种模型的Acceptor和Handler处理都是线程池
Netty使用的是第二种模型,即使你这样写:(boosGroup表示Acceptor)
EventLoopGroup bossGroup = new NioEventLoopGroup(4);
但是由于服务器端的 ServerSocketChannel 只绑定到了 bossGroup 中的一个线程, 因此在调用 Java NIO 的 Selector.select 处理客户端的连接请求时, 实际上是在一个线程中的, 所以对只有一个服务的应用来说, bossGroup 设置多个线程是没有什么作用的, 反而还会造成资源浪费.
来源:oschina
链接:https://my.oschina.net/garlicts/blog/3197556
