code: public synchronized static EventLoopGroup getClientIOEventLoopGroup() {
          if (clientIOEventLoopGroup != null && clientIOEventLoopGroup.isShutdown()) {
              clientIOEventLoopGroup = null;
          }
          if (clientIOEventLoopGroup == null) {
              int clientIoThreads = getIntValue(TRANSPORT_CLIENT_IO_THREADS);
              int threads = clientIoThreads > 0 ?
                  clientIoThreads : // 用户配置
                  Math.max(4, SystemInfo.getCpuCores() + 1); // 默认cpu+1,至少4个
              NamedThreadFactory threadName = new NamedThreadFactory("CLI-IO", true);
              boolean useEpoll = getBooleanValue(TRANSPORT_USE_EPOLL);
              clientIOEventLoopGroup = useEpoll ? new EpollEventLoopGroup(threads, threadName)
                  : new NioEventLoopGroup(threads, threadName);
              refCounter.putIfAbsent(clientIOEventLoopGroup, new AtomicInteger(0));
              // SelectStrategyFactory 未设置
          }
          refCounter.get(clientIOEventLoopGroup).incrementAndGet();
          return clientIOEventLoopGroup;
      }
docs: 获取客户端IO线程池
  
  @return 客户端IO线程池