我正在使用 Netty4 创建一个需要服务多个客户端连接的服务器。ServerBootstrap 由 Parent 和 worker 线程组构成。根据 ServerBootStrap.group() 方法的文档,它
“为父(接受者)和子(客户端)设置EventLoopGroup。这些EventLoopGroup用于处理SocketChannel和Channel的所有事件和IO。”
据我了解, ParentExecutor 组将处理任何传入连接并将其传递给 Child Executor 组以执行。所以为了服务许多客户,我有以下设置
final ServerBootstrap serverBootstrap = new ServerBootstrap();
serverBootstrap.group(new NioEventLoopGroup(), new NioEventLoopGroup(Runtime.getRuntime()
.availableProcessors() * 3))
.channel(NioServerSocketChannel.class)
.childHandler(new MyInitializer());
现在的问题是,我的 Handler 中的以下方法是否会在子 executor 组上执行。我怀疑它是通过 SingleThreadEventExecutor 以单线程方式处理的?
protected void channelRead0(final ChannelHandlerContext ctx, final AppMessage msg)
final AppMessage msg) throws Exception {