How to use the Guava ListenableFuture and the Futures.chain() methods

后端 未结 3 1171
南方客
南方客 2021-01-13 22:10

I have a homework task that requires me to learn how to use the Guava concurrency library.

In the task I have several thread pools, where each one is controlled by a

相关标签:
3条回答
  • 2021-01-13 22:48

    I don't think Futures.chain() is the answer here, if the primary issue is dealing with task dependency lists. More likely is Futures.allAsList or Futures.successfulAsList, which take multiple futures, and return a future that returns only after all of the input futures have succeeded or failed.

    0 讨论(0)
  • 2021-01-13 22:52

    You might be interested in reading the presentation slides on Guava util.concurrent, linked on the Guava homepage (slide 11 and onward). They really helped me crystallize my understanding of ListenableFuture and why it's so useful.

    My guess is that the goal of your assignment is to understand how Futures work, and how Guava's ListenableFuture and Futures.chain() simplifies their use when coordinating multiple tasks.

    The only open source code that comes to mind that uses ListenableFuture is sitebricks-mail:

    • MailClient interface
    • NettyImapClient implementation

    I don't know if it uses Futures.chain(), though.

    0 讨论(0)
  • 2021-01-13 23:11

    As Louis mentions, I think that Futures.allAsList etc. could be useful for you. However, I think that Futures.chain does seem useful and appropriate for the situation you describe. Since this is an assignment meant to challenge you, I'm not going to say any more than this: Futures.chain allows you to submit a task for execution upon completion of another task, and it returns a new ListenableFuture representing the result of that task. How does that apply to what you're trying to do?

    0 讨论(0)
提交回复
热议问题