concurrent/src/main/java/io/airlift/concurrent/MoreFutures.java
public static <T> void addSuccessCallback(ListenableFuture<T> future, Consumer<T> successCallback, Executor executor)
    {
        requireNonNull(future, "future is null");
        requireNonNull(successCallback, "successCallback is null");

        FutureCallback<T> callback = new FutureCallback<T>()
        {
            @Override
            public void onSuccess(@Nullable T result)
            {
                successCallback.accept(result);
            }

            @Override
            public void onFailure(Throwable t) {}
        };
        Futures.addCallback(future, callback, executor);
    }
public static <T> void addSuccessCallback(ListenableFuture<T> future, Consumer<T> successCallback, Executor executor)
    {
        requireNonNull(future, "future is null");
        requireNonNull(successCallback, "successCallback is null");

        FutureCallback<T> callback = new FutureCallback<T>()
        {
            @Override
            public void onSuccess(@Nullable T result)
            {
                successCallback.accept(result);
            }

            @Override
            public void onFailure(Throwable t) {}
        };
        Futures.addCallback(future, callback, executor);
    }
public static < T > void addSuccessCallback ( ListenableFuture < T > future , Consumer < T > successCallback , Executor executor ) { requireNonNull ( future , "future is null" ) ; requireNonNull ( successCallback , "successCallback is null" ) ; FutureCallback < T > callback = new FutureCallback < T > ( ) { @ Override public void onSuccess ( @ Nullable T result ) { successCallback . accept ( result ) ; } @ Override public void onFailure ( Throwable t ) { } } ; Futures . addCallback ( future , callback , executor ) ; }
Invokes the callback, using the specified executor, if the future completes successfully.
Invokes the callback using the specified executor if the future completes successfully .