设置NettyWorker池的正确大小

时间:2013-11-06 17:16:59

标签: java netty

我正在使用Netty 3.7.0并在我的ChannelPipeline中添加了ExecutionHandler(OMATPE)作为第一个元素。

Q1 :进行此设置后,将WorkerPool的大小设置为1应该是安全的,因为它只是创建了ChannelDownstreamEventRunnable,它被添加到ExecutionHandler提供的Executor中。或者我在这里遗漏了什么?

Q2 :我在管道中也有一些解码器,因此解码工作由ExecutionHandler-Thread完成。这是某种“不良做法”吗?即当ExecutionHandler-Threads阻塞?但是,ExecutionHandler的Executor的队列应该增加,而WorkerPool仍然可以处理连接。

1 个答案:

答案 0 :(得分:0)

A1。是的,来自工作池的线程只接受传入的连接,池中的1个线程似乎就足够了。 A2。这取决于您的应用程序。如果您只是从通道中读取,则阻止Executor线程是安全的,并将用作流控制。但在某些情况下,阻止读取处理将阻止发送消息,并可能导致死锁。所以一般来说,由于Netty具有异步特性,所以不应该阻塞执行程序线程,恕我直言。