Class ListenableFuture<V>

  • All Implemented Interfaces:
    java.util.concurrent.Future<V>, ActionListener<V>

    public final class ListenableFuture<V>
    extends BaseFuture<V>
    implements ActionListener<V>
    A future implementation that allows for the result to be passed to listeners waiting for notification. This is useful for cases where a computation is requested many times concurrently, but really only needs to be performed a single time. Once the computation has been performed the registered listeners will be notified by submitting a runnable for execution in the provided ExecutorService. If the computation has already been performed, a request to add a listener will simply result in execution of the listener on the calling thread.
    • Constructor Detail

      • ListenableFuture

        public ListenableFuture()
    • Method Detail

      • addListener

        public void addListener​(ActionListener<V> listener,
                                java.util.concurrent.ExecutorService executor,
                                ThreadContext threadContext)
        Adds a listener to this future. If the future has not yet completed, the listener will be notified of a response or exception in a runnable submitted to the ExecutorService provided. If the future has completed, the listener will be notified immediately without forking to a different thread.
      • onResponse

        public void onResponse​(V v)
        Description copied from interface: ActionListener
        Handle action response. This response may constitute a failure or a success but it is up to the listener to make that decision.
        Specified by:
        onResponse in interface ActionListener<V>
      • onFailure

        public void onFailure​(java.lang.Exception e)
        Description copied from interface: ActionListener
        A failure caused by an exception at some phase of the task.
        Specified by:
        onFailure in interface ActionListener<V>