nettyでは、チャネルパイプラインを流れるイベントは、各チャネルが効果的に1つのスレッドのみに割り当てられ、各ハンドラが順番に互いに呼び出します。これは理にかなっており、多くの同期化の問題を緩和します。Nettyのスレッドの使用の理解
IdleStateHandlerを使用すると、ソースの読み込みから、Timersスレッド(HashedWheelTimeが使用しているスレッドなど)のコンテキストでchannelIdleイベントが '処理される'ように見えます。
この場合、または私は何かを見逃しましたか?その場合、idlestateイベントとIOイベント(例:messageRecievedイベント)が同じチャネルで同時に実行される可能性がありますか?
また、ChannelHandler ctxを保存して別のスレッドで使用すると、たとえばチャネルに「書き込み」することができます。このため、同時に1つのスレッドの下流に、別のスレッドの上流にもイベントが発生します。同じチャンネル?
最後に、どのスレッドがChannelFuturesを実行するのですか?
これらの使用例はすべて完全に受け入れられ、Nettyの批判ではありません。私は実際にライブラリを非常に好んでおり、どこでもそれを利用しています。そのちょうど私がもっと複雑なことをやろうとすると、それがどのようにしてフードの下で働くのかを理解したいので、私は正しい量とちょうどいい量を使うようにすることができます。同期化(ロック)。
ありがとう、私が知る必要があったことをありがとう。 – user1129382