Netty中的Channel.isWritable通知

时间:2012-04-13 15:32:10

标签: java netty

我有一个场景,我需要继续写Channel。如果它无法获取更多数据(因为缓冲区已满等),我需要停止写入,但需要在通道再次可写时立即恢复。当通道再次可写时,如何确定此瞬间?是否有一个我可以覆盖的回调事件?我正在我的业务处理程序中扩展SimpleChannelUpstreamHandler - 这有一个方法channelInterestChanged() - 但不确定这是否是正确的钩子?

我希望避免使用基于线程的原始等待机制,例如wait-notify,因为这些将涉及上下文切换。有任何非阻塞方式来实现这种等待吗?

1 个答案:

答案 0 :(得分:7)

您可以覆盖channelInterestChanged()方法。

类似的东西:

public class MyHandler extends SimpleChannelUpstreamHandler {
    ....

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

这应该做的工作