知识卡片
Guava增强Future
内容
Guava 的 ListenableFuture 在普通 Future 上加监听能力:把任务提交给 Guava 装饰线程池拿到 ListenableFuture,再用 addCallback() 绑定 FutureCallback,跑完自动回调。和 [[Future先给契约]] 差异是不再要求阻塞 get(),正是 [[回调反转方向]]。
参考来源
- 位置:《Java高并发核心编程.卷2,多线程、锁、JMM、JUC、高并发设计模式》第9章《高并发核心模式之异步回调模式》9.5.3节《ListenableFuture异步任务》(源文件:_epub-src/OEBPS/Text/chapter289.xhtml)
- 结论依据:原文总结Guava异步回调的四步流程——实现Callable/Runnable、创建Guava线程池、提交任务获取ListenableFuture、用Futures.addCallback绑定FutureCallback,并明确“完成以上4步,当Callable/Runnable异步执行逻辑完成后,就会回调FutureCallback实例的回调方法onSuccess()/onFailure()”,因此推出本卡结论。
- 原始内容:Guava异步回调的流程如下:(1)实现Java的Callable接口,创建异步执行逻辑……(2)创建Guava线程池。(3)将……异步执行逻辑的实例提交到Guava线程池,从而获取ListenableFuture异步任务实例。(4)创建FutureCallback回调实例,通过Futures.addCallback将回调实例绑定到ListenableFuture异步任务上。