netty4的NioEventLoopGroup是一个线程池,专门负责处理io事件,boss NioEventLoopGroup负责监听网络事件,worker NioEventLoopGroup负责读写,都不能发生阻塞,否则会影响并发性能,可以在handler通道ChannelPipeline中使用内置的线程池EventExecutorGroup来处理耗时业务,相关代码如下:
ChannelPipeline pipeline = ch.pipeline();
EventExecutorGroup eg = eg = new DefaultEventExecutorGroup(16);
pipeline.addLast(eg,new SecureChatServerHandler()); //SecureChatServerHandler存在耗时业务
这样可以把耗时业务和worker线程隔离开。