2024-04-04
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://www.skjava.com/mianshi/baodian/detail/1178488058

回答

NioEventLoopGroup 默认构造函数创建的线程数为 CPU核心数 * 2

    protected MultithreadEventLoopGroup(int nThreads, ThreadFactory threadFactory, Object... args){
        super(nThreads == 0 ? DEFAULT_EVENT_LOOP_THREADS : nThreads, threadFactory, args);
    }
    
   private static final int DEFAULT_EVENT_LOOP_THREADS = Math.max(1, SystemPropertyUtil.getInt("io.netty.eventLoopThreads", NettyRuntime.availableProcessors() * 2));

Math.max(1, SystemPropertyUtil.getInt("io.netty.eventLoopThreads", NettyRuntime.availableProcessors() * 2)) 表示是从这三个数值中获取最大值。

  • NettyRuntime.availableProcessors() * 2CPU核心数 * 2
  • io.netty.eventLoopThreads:系统参数配置,如果没有配置这个值,则使用为 NettyRuntime.availableProcessors() * 2 默认值。
  • 1:这是一个保护机制,确保无论如何 NioEventLoopGroup 至少有一个线程。

我们也可以使用 NioEventLoopGroup(int nThreads) 构造函数来指定线程数。

阅读全文