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);
时刻与技术进步,每天一点滴,日久一大步!!!
本博客只为记录,用于学习,如有冒犯,请私信于我。