我被指派创建一个基于Netty的HTTP客户端,但我遇到了一些困难,我希望能给我一个答案。
好吧,为了充分利用NIO,我想使用相同的channelFactory,这意味着所有连接都由同一个boss线程处理并分配给同一个工作线程池。
我遇到的问题是,如果我使用3名工人,我只会进行3次操作,然后这个过程就会被卡住。即使我在处理响应后关闭了通道,似乎工作线程也没有被释放用于下一个任务...
以下是我如何定义我稍后为引导程序分配的静态channelFactory:
static NioClientSocketChannelFactory channelFactory = new NioClientSocketChannelFactory(
Executors.newFixedThreadPool(1),
Executors.newFixedThreadPool(3));
答案 0 :(得分:1)
找到原因 - 我应该使用newCachedThreadPool并使用包含#Workers的第二个构造函数构建channelFactory。
netty需要一个cachedPool,否则它无法重用WI