我有一种情况,需要继续写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() {
.....
}
}
}
这应该做的工作