Future异步事件驱动
来源:互联网 发布:网络系统集成中的软件 编辑:程序博客网 时间:2024/05/17 10:08
简单来讲,Future是这样一种Pattern: 它本身表示‘将来(future)’,你提交一个异步的任务,比如提交到一个threadpool,与此同时拿到一个Future对象,任务的执行是异步的,这时候你可以去做其它的事情,等到异步任务结束的时候,你可通过前面的Future对象拿到异步执行的任务的结果。
Future要获取异步任务执行的结果,需要通过轮询或者阻塞等待的方式,这样的方式,总显得不太‘完美’,我们知道,比较好的方式,应该是异步执行结束后,自动通知用户异步任务结束了,你可以通过Future来获取执行结果了。这就诞生了google的ListenableFuture,用户可以向它注册一个回调函数和提供一个线程池(可选),当异步任务执行结束后,它会自动在用户提供的线程池里调用用户注册的回调函数,通知用户异步任务执行结束了。当然,如果用户不提供线程池,它会在运行异步任务的工作线程里运行回调函数,这种情况适用于工作线程本身的任务比较轻量级的情景。
CompletionService
将生产新的异步任务与使用已完成任务的结果分离开来的服务。生产者 submit 执行的任务。使用者take 已完成的任务,并按照完成这些任务的顺序处理它们的结果。CompletionService
相当于Executor加上BlockingQueue,使用场景为当子线程并发了一系列的任务以后,主线程需要实时地取回子线程任务的返回值并同时顺序地处理这些返回值,谁先返回就先处理谁。
CompletionService
submit
poll
(非阻塞)或 take
(阻塞)方法获取下一个结果:这一特征看起来和阻塞队列(BlockingQueue
)类似,两者的区别在于 CompletionService
- Future异步事件驱动
- 事件驱动异步模式
- 同步、异步、事件驱动
- 事件驱动与异步IO
- 多线程 异步实现(通过事件驱动)
- Netty框架之异步事件驱动模型
- 【Nginx】事件驱动框架和异步处理
- nodejs 异步I/O和事件驱动
- Netty框架之异步事件驱动模型
- NodeJS中的异步I/O、事件驱动
- 论事件驱动与异步IO
- Netty框架之异步事件驱动模型
- Future异步计算
- Future异步计算
- Future 模式(异步调用)
- Future 模式(异步调用)
- Future模式(异步调用)
- 异步:boost async & boost future
- epoll 实例
- java中常见的数据算法
- 代理模式----C++实现
- 一些常用的代码
- linux 多线程的线程控制和线程通信
- Future异步事件驱动
- 改变ubuntu下系统字体
- 马云杀入手游业挑战腾讯 游戏开发商分成比提至70%厉害
- ACPI Tables
- 人工神经网络ANN的一些概念的集合
- ViewPager结合Fragment实现页面左右滑动
- addd
- visual studio 2010 中VC++自定义项目模板
- Ogre中使用HLSL的一个例子