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

发布于 2022-09-01 05:45:06 字数 1061 浏览 25 评论 0

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

相守太难 2022-09-08 05:45:06

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

早茶月光 2022-09-08 05:45:06

Promise继承自Future,
图片描述

Nttey的Future本身没有写操作相关接口,Netty设计了Promise,用于设置IO操作的结果.Promise接口提供了setFailure/setSuccess等方法.
DefaultChannelPromise在Netty中最常用了.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文