java - Netty 中的 ChannelPromise 具体是做什么用的?
天蓬老师
天蓬老师 2017-04-17 13:20:00
[Java讨论组]

最近一直在学习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是做数据过程中的数据保证!

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号