Netty概念之 Future 和 Promise

(一)jdk中future和netty中future的比较

jdk中future:

// 取消异步操作
boolean cancel(boolean mayInterruptIfRunning); // 异步操作是否取消 boolean isCancelled(); // 异步操作是否完成,正常终止、异常、取消都是完成 boolean isDone(); // 阻塞直到取得异步操作结果 V get() throws InterruptedException, ExecutionException; // 同上,但最长阻塞时间为timeout V get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException;

jdk中future的特点:
1.无论结果是成功还是失败还是取消,返回的都是isdone();
2.而且我们在异步操作触发和结束的时候比较关心其他的一些操作,在jdk的future中无法进行补充。所以netty对future做了扩展。

netty中future(以下为扩展内容):

// 异步操作完成且正常终止
boolean isSuccess(); // 异步操作是否可以取消 boolean isCancellable(); // 异步操作失败的原因 Throwable cause(); // 添加一个监听者,异步操作完成时回调,类比javascript的回调函数 Future<V> addListener(GenericFutureListener<? extends Future<? super V>> listener); Future<V> removeListener(GenericFutureListener<? extends Future<? super V>> listener); // 阻塞直到异步操作完成 Future<V> await() throws InterruptedException; // 同上,但异步操作失败时抛出异常 Future<V> sync() throws InterruptedException; // 非阻塞地返回异步结果,如果尚未完成返回null V getNow();

netty中future的特点:
1.操作结果分为success,fail,canceled三种;
2.并且通过addlisteners()方法可以添加回调操作,即触发或者完成时需要进行的操作;
3.await()和sync(),可以以阻塞的方式等待异步完成;getnow()可以获得异步操作的结果,如果还未完成则返回Null;

 

 

netty中的promise扩展自future,相比之下多了 可写 的api


Promise<V> setSuccess(V result);


boolean trySuccess(V result);


Promise<V> setFailure(Throwable cause);


boolean tryFailure(Throwable cause);


boolean setUncancellable();

 

转载于:https://www.cnblogs.com/ironroot/p/8583045.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值