0

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

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

Q2:我在管道中也有一些解码器,所以解码工作由 ExecutionHandler-Thread 完成。这是某种“坏习惯”吗?即当 ExecutionHandler-Threads 阻塞时?但是 ExecutionHandler 的 Executor 的队列应该只是增加并且连接仍然可以由 WorkerPool 处理。

4

1 回答 1

0

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

于 2013-11-06T19:49:11.643 回答