netty可以将多个IO线程分配给同一个Channel吗?

时间:2012-12-14 03:41:35

标签: netty

如果我要编写以下代码段:

class SimpleHandler extends SimpleChannelUpstreamHandler {
    ...
    public static void main( String[] args ) throws Exception {
    ServerBootstrap b = new ServerBootstrap( 
        new NioServerSocketChannelFactory( 
            Executors.newCachedThreadPool(), 
            Executors.newCachedThreadPool(), 
            10 ));
    b.setPipelineFactory( new ChannelPipelineFactory() {
        public ChannelPipeline getPipeline() throws Exception {
            return Channels.pipeline( new SimpleHandler() );
        }
    });
    b.bind( new InetSocketAddress( p ));
}

假设以下情况:

  • 频道C1有输入
  • netty将线程T1分配给通道C1
  • 在线程T1读取了来自通道C1的所有输入之后,当它仍处理输入时,更多输入到达通道C1

我的问题是:netty会将新线程分配给通道C1(假设线程池中有空闲线程)吗?

提前致谢

1 个答案:

答案 0 :(得分:0)

一旦将一个线程/选择器分配给一个通道,它将在其所有生命周期中使用相同的线程/选择器。所以它一直都会被服务。