Class ListenableFuture<V>

java.lang.Object
org.elasticsearch.common.util.concurrent.BaseFuture<V>
org.elasticsearch.common.util.concurrent.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 Details

  • Method Details

    • addListener

      public void addListener​(ActionListener<V> listener, java.util.concurrent.ExecutorService executor)
      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.
    • 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. It will apply the provided ThreadContext (if not null) when executing the listening.
    • done

      protected void done()
      Overrides:
      done in class BaseFuture<V>
    • 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>