Future、Promise
继承关系
1、Netty 中的 Future 与 JDK 中的 Future 同名,但是为两个接口
java.util.concurrent.Future<V>
io.netty.util.concurrent.Future<V>
2、Netty 的 Future 继承自 JDK 的 Future,而 Promise 对 Netty Future 进行扩展
public interface Promise<V> extends io.netty.util.concurrent.Future<V>
public interface io.netty.util.concurrent.Future<V> extends java.util.concurrent.Future<V>
public interface java.util.concurrent.Future<V>
功能区别
1、JDK Future 只能同步等待任务结束(成功 / 失败),才能得到结果
2、Netty Future 可以同步等待任务结束得到结果,也可以异步方式得到结果,但都要等待任务结束
3、Netty Promise 不仅有 Netty Future 功能,而且脱离任务独立存在,只作为两个线程间传递结果的容器
功能/名称 | JDK Future | Netty Future | Promise |
---|---|---|---|
cancel | 取消任务 | - | - |
isCanceled | 任务是否再正常完成前被取消 | - | - |
isDone | 任务是否完成,不能区分成功失败 | - | - |
get | 阻塞等待,直到获取任务结果,如果任务失败,抛出异常 | - | - |
getNow | - | 获取任务结果,非阻塞,还未产生结果时返回 null | - |
await | - | 等待任务结束,如果任务失败,不会抛异常,手动调用 isSuccess 进行判断 | - |
sync | - | 等待任务结束,不获取任务结果,如果任务失败,抛出异常 | - |
isSuccess | - | 判断任务是否成功 | - |
cause | - | 获取失败信息,非阻塞,如果没有失败,返回null | - |
addLinstener | - | 添加回调,异步接收结果 | - |
setSuccess | - | - | 设置成功结果 |
setFailure | - | - | 设置失败结果 |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战