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 を含む 2 番目のコンストラクターを使用して channelFactory を構築する必要がありました。

netty には cachedPool が必要です。そうしないと、WI を再利用できません

于 2012-11-03T15:39:40.297 に答える