我有一个场景,我需要继续写Channel
。如果它无法获取更多数据(因为缓冲区已满等),我需要停止写入,但需要在通道再次可写时立即恢复。当通道再次可写时,如何确定此瞬间?是否有一个我可以覆盖的回调事件?我正在我的业务处理程序中扩展SimpleChannelUpstreamHandler
- 这有一个方法channelInterestChanged()
- 但不确定这是否是正确的钩子?
我希望避免使用基于线程的原始等待机制,例如wait-notify,因为这些将涉及上下文切换。有任何非阻塞方式来实现这种等待吗?
答案 0 :(得分:7)
您可以覆盖channelInterestChanged()
方法。
类似的东西:
public class MyHandler extends SimpleChannelUpstreamHandler {
....
@Override
public void channelInterestChanged(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception {
if (e.getChannel().isWritable() {
.....
}
}
}
这应该做的工作