private static Pair<EventLoopGroup, Class<? extends Channel>>
    getDefaultEventLoopConfig(Configuration conf) {
    Pair<EventLoopGroup, Class<? extends Channel>> eventLoop = DEFAULT_EVENT_LOOP;
    if (eventLoop != null) {
      return eventLoop;
    }
    synchronized (NettyRpcClientConfigHelper.class) {
      eventLoop = DEFAULT_EVENT_LOOP;
      if (eventLoop != null) {
        return eventLoop;
      }
      int threadCount = conf.getInt(HBASE_NETTY_EVENTLOOP_RPCCLIENT_THREADCOUNT_KEY, 0);
      eventLoop = new Pair<>(
        new NioEventLoopGroup(threadCount,
          new DefaultThreadFactory("RPCClient-NioEventLoopGroup", true, Thread.NORM_PRIORITY)),
        NioSocketChannel.class);
      DEFAULT_EVENT_LOOP = eventLoop;
    }
    return eventLoop;
  }
The {@link NettyRpcClient} will create its own {@code NioEventLoopGroup}.
hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/NettyRpcClientConfigHelper.java