channelInterestChanged

channelInterestChanged

我有一种情况,需要继续写Channel。如果无法获取更多数据(由于缓冲区已满等),我需要停止写入,但需要在 channel 再次可写时恢复。如何确定 channel 再次可写时的这一瞬间?是否有可以触发的回调事件被触发?我在业务处理程序中扩展SimpleChannelUpstreamHandler-这有一个channelInterestChanged()方法-但不确定这是否是正确的钩子(Hook)?

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

最佳答案

您可以覆盖channelInterestChanged()方法。

像这样的东西:

public class MyHandler extends SimpleChannelUpstreamHandler {
    ....

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

这应该做的工作

10-06 01:46