com.google.common.util.concurrent
Class ListenableFutureTask<V>

java.lang.Object
  extended by java.util.concurrent.FutureTask<V>
      extended by com.google.common.util.concurrent.ListenableFutureTask<V>
All Implemented Interfaces:
ListenableFuture<V>, Runnable, Future<V>, RunnableFuture<V>

public final class ListenableFutureTask<V>
extends FutureTask<V>
implements ListenableFuture<V>

A FutureTask that also implements the ListenableFuture interface. Subclasses must make sure to call super.done() if they also override the done() method, otherwise the listeners will not be called.

Since:
1.0
Author:
Sven Mawson

Constructor Summary
ListenableFutureTask(Callable<V> callable)
          Deprecated. 
ListenableFutureTask(Runnable runnable, V result)
          Deprecated. 
 
Method Summary
 void addListener(Runnable listener, Executor exec)
          Registers a listener to be run on the given executor.
static
<V> ListenableFutureTask<V>
create(Callable<V> callable)
          Creates a ListenableFutureTask that will upon running, execute the given Callable.
static
<V> ListenableFutureTask<V>
create(Runnable runnable, V result)
          Creates a ListenableFutureTask that will upon running, execute the given Runnable, and arrange that get will return the given result on successful completion.
protected  void done()
           
 
Methods inherited from class java.util.concurrent.FutureTask
cancel, get, get, isCancelled, isDone, run, runAndReset, set, setException
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface java.util.concurrent.Future
cancel, get, get, isCancelled, isDone
 

Constructor Detail

ListenableFutureTask

@Beta
@Deprecated
public ListenableFutureTask(Callable<V> callable)
Deprecated. 

Deprecated. Use create(Callable) instead. This method will be removed from Guava in Guava release 11.0. Creates a ListenableFutureTask that will upon running, execute the given Callable.

Parameters:
callable - the callable task

ListenableFutureTask

@Beta
@Deprecated
public ListenableFutureTask(Runnable runnable,
                                            @Nullable
                                            V result)
Deprecated. 

Deprecated. Use create(Runnable, Object) instead. This method will be removed from Guava in Guava release 11.0. Creates a ListenableFutureTask that will upon running, execute the given Runnable, and arrange that get will return the given result on successful completion.

Parameters:
runnable - the runnable task
result - the result to return on successful completion. If you don't need a particular result, consider using constructions of the form: ListenableFuture<?> f = ListenableFutureTask.create(runnable, null)
Method Detail

create

public static <V> ListenableFutureTask<V> create(Callable<V> callable)
Creates a ListenableFutureTask that will upon running, execute the given Callable.

Parameters:
callable - the callable task
Since:
10.0

create

public static <V> ListenableFutureTask<V> create(Runnable runnable,
                                                 @Nullable
                                                 V result)
Creates a ListenableFutureTask that will upon running, execute the given Runnable, and arrange that get will return the given result on successful completion.

Parameters:
runnable - the runnable task
result - the result to return on successful completion. If you don't need a particular result, consider using constructions of the form: ListenableFuture<?> f = ListenableFutureTask.create(runnable, null)
Since:
10.0

addListener

public void addListener(Runnable listener,
                        Executor exec)
Description copied from interface: ListenableFuture
Registers a listener to be run on the given executor. The listener will run when the Future's computation is complete or, if the computation is already complete, immediately.

There is no guaranteed ordering of execution of listeners, but any listener added through this method is guaranteed to be called once the computation is complete.

Exceptions thrown by a listener will be propagated up to the executor. Any exception thrown during Executor.execute (e.g., a RejectedExecutionException or an exception thrown by inline execution) will be caught and logged.

Note: For fast, lightweight listeners that would be safe to execute in any thread, consider MoreExecutors.sameThreadExecutor(). For heavier listeners, sameThreadExecutor() carries some caveats: First, the thread that the listener runs in depends on whether the Future is done at the time it is added. In particular, if added late, listeners will run in the thread that called addListener. Second, listeners may run in an internal thread of the system responsible for the input Future, such as an RPC network thread. Finally, during the execution of a sameThreadExecutor listener, all other registered but unexecuted listeners are prevented from running, even if those listeners are to run in other executors.

This is the most general listener interface. For common operations performed using listeners, see Futures

Specified by:
addListener in interface ListenableFuture<V>
Parameters:
listener - the listener to run when the computation is complete
exec - the executor to run the listener in

done

protected void done()
Overrides:
done in class FutureTask<V>


Copyright © 2010-2011. All Rights Reserved.