要使用多少个执行程序?

时间:2013-01-13 21:22:31

标签: netty

netty代理示例对服务器和客户端nio套接字工厂的Executors.newCachedThreadPoolbossExecutor使用单个workerExecutor。 有这个原因吗?

1 个答案:

答案 0 :(得分:1)

回顾: boss线程用于接受连接,而工作线程执行从通道处理传入/传出缓冲区的实际工作。

Boss线程通常不是很忙。此外,netty每个端口只需要一个线程,而不是整个池。但你可能会决定,例如有一个线程池与一个线程到服务器10端口。所有端口都将通过相同的单一老板线程共享和竞争。

回到你的问题:为boss和worker线程提供相同的池是个好主意吗?这并不可怕,您可以使您的设计和维护更简单一些。但是,由于池中的所有线程可能都被工作者占用而没有留给老板的线程,因此存在接受延迟接收新连接的风险。不要认为这是一个大问题。