Netty 中的 ChannelPromise 具体是做什么用的?
最近一直在学习Netty,不明白ChannelPromise具体是做什么用的
我使用的Netty是4.0.0.Final版本,其中ChannelOutboundHandler接口的部分定义:
public interface ChannelOutboundHandler extends ChannelHandler {
/**
* Called once a write operation is made. The write operation will write the messages through the
* {@link ChannelPipeline}. Those are then ready to be flushed to the actual {@link Channel} once
* {@link Channel#flush()} is called
*
* @param ctx the {@link ChannelHandlerContext} for which the write operation is made
* @param msg the message to write
* @param promise the {@link ChannelPromise} to notify once the operation completes
* @throws Exception thrown if an error accour
*/
void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception;
//其他的方法..
}
Promise继承了Future,我对Future有一定了解:Future可以保存在将来计算出的结果或错误,可以通过Future实例来判断是否计算完成、阻塞等待结果、取消、注册监听器之类的
这里的Promise和Future有什么区别?具体到Netty中,如何使用?比如上面的write方法?
我是悲剧哥
10 years, 6 months ago