5

への書き込みを続ける必要があるシナリオがありChannelます。それ以上のデータを取得できない場合 (バッファーがいっぱいになっているなど)、書き込みを停止する必要がありますが、チャネルが再び書き込み可能になったらすぐに再開する必要があります。チャネルが再び書き込み可能になる瞬間をどのように判断すればよいですか? オーバーライドできるコールバック イベントはありますか? SimpleChannelUpstreamHandlerビジネスハンドラーを拡張しています-これにはメソッドがありますchannelInterestChanged()-しかし、これが正しいフックであるかどうかわかりませんか?

コンテキストの切り替えが必要になるため、wait-notify などのプリミティブなスレッドベースの待機メカニズムの使用を避けたいと考えていました。この待機を達成するための非ブロッキング方法はありますか?

4

1 に答える 1

7

メソッドをオーバーライドできますchannelInterestChanged()

そんな感じ:

public class MyHandler extends SimpleChannelUpstreamHandler {
    ....

    @Override
    public void channelInterestChanged(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception {
        if (e.getChannel().isWritable() {
            .....
        }
    }
}

これは仕事をする必要があります

于 2012-04-13T18:34:54.330 に答える