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