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 | - | - | 设置失败结果 |

浙公网安备 33010602011771号