netty プロキシの例では、サーバーとクライアントの両方の nio ソケット ファクトリのとに単一Executors.newCachedThreadPool
の を使用しています。
これには理由がありますか?bossExecutor
workerExecutor
1 に答える
1
要約:ボス スレッドは接続を受け入れるために使用され、ワーカースレッドはチャネルからの受信/送信バッファーを処理する実際の作業を行います。
ボス スレッドは通常、あまりビジーではありません。さらに、netty は、実際にはプール全体ではなく、ポートごとに 1 つのスレッドのみを必要とします。しかし、たとえば、サーバー 10 ポートへのスレッドが 1 つあるスレッド プールを 1 つ持つこともできます。すべてのポートは、同じ単一のボス スレッドを共有し、競合します。
質問に戻りますが、ボス スレッドとワーカー スレッドに同じプールを使用するのは良い考えですか? ひどいことではありません。設計とメンテナンスが少し簡単になります。ただし、プール内のすべてのスレッドがワーカーによって占有され、boss 用のスレッドが残っていない可能性があるため、遅延を伴う新しい接続の受け入れのリスクがあります。大した問題だと思わないでください。
于 2013-01-13T21:29:13.740 に答える