【发布时间】:2013-10-29 10:48:02
【问题描述】:
我正在使用 Netty4 创建一个需要为多个客户端连接提供服务的服务器。 ServerBootstrap 由 Parent 和工作线程组构成。根据 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 {
【问题讨论】:
标签: netty