2

我被分配创建一个基于 Netty 的 HTTP 客户端,但我遇到了一些困难,我希望有一个答案。

好吧,为了充分利用 NIO,我想使用同一个 channelFactory,这意味着所有连接都由同一个老板线程处理并分配给同一个工作线程池。

我遇到的问题是,如果我使用 3 名工人,我只能进行 3 次操作,然后流程就会卡住。即使我在处理响应后关闭了通道,似乎工作线程也没有被释放以进行下一次分配......

以下是我如何定义我稍后分配给引导程序的静态 channelFactory:

static NioClientSocketChannelFactory channelFactory =  new NioClientSocketChannelFactory(
          Executors.newFixedThreadPool(1),
          Executors.newFixedThreadPool(3));
4

1 回答 1

1

找到了原因 - 我应该使用 newCachedThreadPool 并使用包含#Workers 的第二个构造函数构造 channelFactory。

netty 需要一个 cachedPool ,否则它不能重用 WI

于 2012-11-03T15:39:40.297 回答