zoukankan      html  css  js  c++  java
  • 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);
  • 相关阅读:
    tomcat+nginx+redis实现均衡负载、session共享
    基于Java的开源3D游戏引擎jMonkeyEngine
    父线程,没有等子线程执行完就退出
    sun.misc.BASE64Encoder找不到jar包的解决方法
    perl (Ss+)+
    安装,配置kafka
    Uncaught Error: Error calling method on NPObject.
    Caused by: org.apache.ibatis.ognl.OgnlException: source is null for getProperty(null, "list")
    error='Cannot allocate memory'
    大众点评CAT安装部署记录
  • 原文地址:https://www.cnblogs.com/myitnews/p/11441523.html
Copyright © 2011-2022 走看看