netty代理示例对服务器和客户端nio套接字工厂的Executors.newCachedThreadPool
和bossExecutor
使用单个workerExecutor
。
有这个原因吗?
答案 0 :(得分:1)
回顾: boss线程用于接受连接,而工作线程执行从通道处理传入/传出缓冲区的实际工作。
Boss线程通常不是很忙。此外,netty每个端口只需要一个线程,而不是整个池。但你可能会决定,例如有一个线程池与一个线程到服务器10端口。所有端口都将通过相同的单一老板线程共享和竞争。
回到你的问题:为boss和worker线程提供相同的池是个好主意吗?这并不可怕,您可以使您的设计和维护更简单一些。但是,由于池中的所有线程可能都被工作者占用而没有留给老板的线程,因此存在接受延迟接收新连接的风险。不要认为这是一个大问题。