Java中的Future:对于一个异步操作,可以暂时返回一个Future对象,然后去做别的事情。最后通过get方法拿到结果。如果get时异步操作还没有完成,则进行阻塞状态。

Netty对Future类对java类进行了扩展,不但对future有些接口进行了改写,还对Future类增加了观察者模式。

public interface Future<V> {boolean cancel(boolean mayInterruptIfRunning);boolean isCancelled();boolean isDone();V get() throws InterruptedException, ExecutionException;V get(long timeout, TimeUnit unit)throws InterruptedException, ExecutionException, TimeoutException;
}

public interface Future<V> extends java.util.concurrent.Future<V> {boolean isSuccess();boolean isCancellable();Throwable cause();Future<V> addListener(GenericFutureListener<? extends Future<? super V>> listener);Future<V> addListeners(GenericFutureListener<? extends Future<? super V>>... listeners);Future<V> removeListener(GenericFutureListener<? extends Future<? super V>> listener);Future<V> removeListeners(GenericFutureListener<? extends Future<? super V>>... listeners);Future<V> sync() throws InterruptedException;Future<V> syncUninterruptibly();Future<V> await() throws InterruptedException;Future<V> awaitUninterruptibly();boolean await(long timeout, TimeUnit unit) throws InterruptedException;boolean await(long timeoutMillis) throws InterruptedException;boolean awaitUninterruptibly(long timeout, TimeUnit unit);boolean awaitUninterruptibly(long timeoutMillis);V getNow();@Overrideboolean cancel(boolean mayInterruptIfRunning);
}

public interface GenericFutureListener<F extends Future<?>> extends EventListener {/*** Invoked when the operation associated with the {@link Future} has been completed.** @param future  the source {@link Future} which called this callback*/void operationComplete(F future) throws Exception;
}

JDK所提供的Future只能通过手动的方式检查结果,检查结果这个操作是阻塞的。netty对channelFuture进行了增强,通过ChannelFutureListener以回调的方式来获取执行结果,没有检查操作。

注意:ChannelFutureListener的operationComplete方法是由I/O线程执行的,因此注意的是不要再这里执行耗时操作,否则需要用另外的线程池执行。

中的listeners_Netty源码学习(6)-- Netty中的异步处理相关推荐

  1. ubuntu中手动编译源码安装Xorg-server过程中依赖关系的解决

    ubuntu中手动编译源码安装Xorg-server过程中依赖关系的解决 在linux系统中手动编译源码安装软件包的过程是非常痛苦的,然而这一个多星期以来我是强忍住脾气体验了一把,虽然面对慢的令人发指 ...

  2. XLua源码学习:Lua中调用CS

    在使用lua代码开发的过程中,一个非常重要的部分是对C#代码的调用,接下来就结合源码分析理解它的实现: 在lua中,使用诸如以下代码便可以调用C#的代码: CS.UnityEngine.Debug.L ...

  3. 【redis源码学习】redis 中的“消息队列” Stream

    文章目录 关于redis Stream Stream 结构 Stream 操作 添加消息 新增消费组 删除消息 裁剪信息流 释放消费组 查找元素 关于redis Stream redis stream ...

  4. MySQL源码学习:MySQL中禁止跨库访问的实现

    摘要:  先说一下这里"跨库"的意思:当前use的是db1, 仍可以使用select * from db2.table1来访问table1表. 这样使得我们需要访问同一个MySQL ...

  5. 蚂蚁金服开源-SofaRpc源码学习篇

    大家好,我叫大鸡腿,大家可以关注下我,会持续更新技术文章还有人生感悟,感谢~ 文章目录 官网 基本流程 SofaRpc学习 代码入手 服务端-发布过程 服务端-构造执行链 服务端-注册到注册中心 客户 ...

  6. STL源码学习之空间配置

    STL的空间配置器主要用于内存的分配.填充.释放等操作,在学习它之前,需要深入一点理解new和delete.由于new和delete分两段操作:内存配置和对象构建(析构),本文亦将按此进行分类,其中第 ...

  7. Vuex 4源码学习笔记 - Vuex是怎么与Vue结合?(三)

    在上一篇笔记中:Vuex源码学习笔记 - Vuex开发运行流程(二) 我们通过运行npm run dev命令来启动webpack,来开发Vuex,并在Vuex的createStore函数中添加了第一个 ...

  8. Spring Cloud 源码学习之 Hystrix 入门

    欢迎访问陈同学博客原文 Hystrix 功能非常多,本文仅对 Hystrix 源码做入门学习.为便于阅读,文中源码有较大删减,仅保留入门学习必要的源码,降低其他逻辑的干扰. 从 Hystrix 名字说 ...

  9. Java 中 Integer 源码学习之缓存池了解

    Java 中 Integer 源码学习之缓存池了解 面试题 new Integer(123) 与 Integer.valueOf(123) 的区别? new Integer(123) 每次都会新建一个 ...

最新文章

  1. php读取文件内容不全,php读取文件内容的三种方法
  2. python装饰器类-PYTHON里的装饰器能装饰类吗
  3. [云炬创业基础笔记] 第四章测试11
  4. Android Art Hook 技术方案
  5. boost::assertion_failed_msg相关的测试程序
  6. 百度作业帮-产品分析
  7. 独立站卖家不可缺的推广引流?
  8. 机器学习基础算法33-HMM实践
  9. iframe 模拟ajax文件上传and formdata ajax 文件上传
  10. Mysql时间函数及格式处理
  11. geektool 天气_桌面自定义:适用于OS X的GeekTool简介
  12. 网络营销-渠道、公关
  13. 用正则表达式验证邮箱、密码、QQ号、手机号、身份证号
  14. MTK 9.0平台调试gsensor
  15. php企业后台管理系统模板,企业版PHP后台管理模板【清爽型】修改版~
  16. Spring Boot 启动 出现异常The bean xxx could not be injected as a xx.xxxx because it is a JDK dynami
  17. 分享10个非常不错的封面设计模板
  18. ARM NEON优化4.RGB图像转灰度图
  19. 一个有趣推理题的答案
  20. SF26 | 适用于商品+股指的枢轴点趋势策略

热门文章

  1. Java内部类与静态内部类
  2. rdcl 报表设置不分页
  3. 给25岁男人的忠告:有种责任感.
  4. [转载]为什么使用 SLF4J 而不是Log4J来做Java 日志
  5. 我理解的几种字符编码方式
  6. LintCode_173 链表插入排序
  7. 解决X64操作系统PL/SQL连接报错问题 make sure you have the 32 bits oracle client installed
  8. 无限驾驶汉化后黑屏问题
  9. python列表解析式如何使用_python列表推导式操作解析
  10. Emscripten 单词_(第30期:英语教师备课资料) 英文标识记单词 有趣有用又高效...