Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CompletionService/ListenableFuture的意义探讨 #24

Open
lonelystone545 opened this issue May 16, 2019 · 2 comments
Open

CompletionService/ListenableFuture的意义探讨 #24

lonelystone545 opened this issue May 16, 2019 · 2 comments

Comments

@lonelystone545
Copy link

您好,很高兴看到这个项目,非常受益。有点问题想跟您讨论下。

  1. CompletionService是通过内部队列保存线程执行的结果,并保证了先执行完线程的结果会优先进入队列;然而,很难想到有啥实际的应用场景。第一,如果是为了拿每个线程的结果做二次处理,那么完全可以放在各个子线程中去处理;第二,如果是为了拿到所有线程的执行结果返回给上层服务,那么可以采用CompletableFuture.allOf来做。。。求大神指教。
  2. ListenableFuture是添加了监听的功能,当执行完成或者抛出异常后,做处理。。。既然这样,为什么不是在子线程执行中直接做处理呢?感觉很奇怪。。求大神指教
@CoffeeLatte007
Copy link
Member

您好,很高兴看到这个项目,非常受益。有点问题想跟您讨论下。

  1. CompletionService是通过内部队列保存线程执行的结果,并保证了先执行完线程的结果会优先进入队列;然而,很难想到有啥实际的应用场景。第一,如果是为了拿每个线程的结果做二次处理,那么完全可以放在各个子线程中去处理;第二,如果是为了拿到所有线程的执行结果返回给上层服务,那么可以采用CompletableFuture.allOf来做。。。求大神指教。
  2. ListenableFuture是添加了监听的功能,当执行完成或者抛出异常后,做处理。。。既然这样,为什么不是在子线程执行中直接做处理呢?感觉很奇怪。。求大神指教

这个CompletionService/ListenableFuture 我没有介绍好像,CompletionService/ListenableFuture 这两个我目前都没用过 ,可以关注我公众号加群讨论

@victor3pt
Copy link

ListenableFuture是Guava提供的监视Future是否完成任务,还在阻塞阶段,Java的CompletableFuture就提供了这个特点。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants