java - Netty 中的 ChannelPromise 具体是做什么用的?

 湖南美景创意动画设计有限公司 发布于 2022-11-03 19:32

最近一直在学习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方法?

1 个回答
  • Future只是获取一个通信的数据结果,Promise是做数据过程中的数据保证!

    2022-11-06 07:22 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有