1
上下文是Netty 3.5.x.Netty - NioWorker池和工作线程池之间的关系
创建NioServerSocketChannelFactory
或NioClientSocketChannelFactory
时,NioWorker
的数量与工作线程池中的线程数之间的关系是什么? Netty的设计是否规定线程池中可用的线程数至少为NioWorkers
?如果线程池中的线程数少于NioWorker
s,会发生什么情况?
谢谢你的回答。根据我的经验,如果线程池中的线程数少于'NioWorker'的数量,客户端或服务器有时无法长时间完成连接请求(在内部,老板线程提交的注册任务似乎永远不会拿起)。我不知道Netty是否允许创建'ChannelFactory'对象,其中线程池中的最大线程数小于'NioWorker'的数量。 – atuladhar
目前,如果您使用仅包含2个执行程序的构造函数(例如'NioClientSocketChannelFactory(Executor,Executor)'),那么很容易犯这个错误。默认情况下,Netty会创建两倍于NioWorker的数目,如果工作者执行者不能提供至少那么多的线程,你会得到间歇性的连接失败。另外,如果关联是真正的1:1,这可能是值得在JavaDoc中明确表达的东西。 – atuladhar