Netty线程模型

Posted myitnews

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Netty线程模型相关的知识,希望对你有一定的参考价值。

Netty支持单线程、主线程模型、主从多线程模型。

我们在创建线程组的时候,如果不传递参数,则默认构建的线程组线程是CPU核心数量。

一、单线程模型

在ServerBootstrap调用方法group时,传递的参数是同一个线程组,且在构造线程组的时候,构造参数为1,这种开发方式,就是一个单线程模型。

个人机开发测试使用,不推荐。

ServerBootstrap bootstrap = new ServerBootstrap();
EventLoopGroup group = new NioEventLoopGroup(1);
bootstrap.group(group, group);

二、主线程模型

在ServerBootstrap调用方法group的时候,传递的参数是两个不同的线程组。负责监听的线程组,线程数为1,即构造参数为1。负责处理客户端任务的线程组,线程数大于1,即构造参数大于1。这种开发方式,就是多线程模型。

长连接,且客户端数量较少,连接持续时间较长情况下使用。如:企业内部交流应用。

//监听请求线程组
EventLoopGroup acceptorGroup = new NioEventLoopGroup(1);
//处理客户端任务线程组
EventLoopGroup clientGroup = new NioEventLoopGroup();

ServerBootstrap bootstrap = new ServerBootstrap();
bootstrap.group(acceptorGroup,clientGroup);

三、主从多线程模型

在ServerBootstrap调用方法group的时候,传递的参数是两个不同的线程组。负责监听的线程组,线程数大于1,即构造参数大于1。负责处理客户端任务的线程组,线程数大于1,即构造参数大于1。这种开发方式,就是主从多线程模型。

长连接,客户端数量相对较多,连接持续时间较长的情况下使用。如:对外提供的相册的服务器。

EventLoopGroup acceptorGroup = new NioEventLoopGroup();
EventLoopGroup clientGroup = new NioEventLoopGroup();
ServerBootstrap bootstrap = new ServerBootstrap();
bootstrap.group(acceptorGroup, clientGroup);

 

以上是关于Netty线程模型的主要内容,如果未能解决你的问题,请参考以下文章

Netty的线程模型

Netty的线程模型

Netty线程模型

结合异步模型,再次总结Netty多线程编码最佳实践

Netty系列之Netty线程模型

Netty线程模型