4

ドキュメントには、利用可能なさまざまなタイプのエグゼキューターに関する詳細は記載されていません。私が望むのは、netty 3 にあった MemoryAwareThreadPoolExecutor のように、構成可能なスレッド プールに基づくエグゼキュータを用意することです。

どうすればいいですか?

4

1 に答える 1

6

EventExecutorGroupパイプラインにハンドラーを追加する場合、ハンドラーと共に を指定できます。

EventExecutorGroup executor = new DefaultEventExecutorGroup(...);
...

ChannelPipeline p = ch.pipeline();
p.addLast(executor, new MyHandler());

EventExecutorGroupOrderedMemoryAwareThreadPoolExecutorメモリ制約を適用しない点を除いて、 に似ています。メモリの制約を適用するには、独自のハンドラーを実装する必要があります。これMemoryAwareThreadPoolExecutorはあまり効率的ではなく、多くの場合、パフォーマンスの問題がありました。

MemoryAwareThreadPoolExecutorNetty 4 のすべてのハンドラー メソッドは、同じ接続に対して順次呼び出されるため、 に代わるものはありません。順序付けされていない実行が必要な場合は、タスクをjava.util.concurrent.Executor. この決定は意図的なものです。それ以外の場合、ハンドラの実装はスレッド セーフを消費できません。

于 2013-04-17T08:25:23.850 に答える