@GwtIncompatible public final class LazyExecutorService extends Object implements ExecutorService
In essence, a returned Future represents a "canned" method call and once the call has been performed, the Future returns the cached result.
Both this class and the returned Future are thread-safe.
| Constructor and Description |
|---|
LazyExecutorService()
Creates an instance using a
MoreExecutors.newDirectExecutorService() for the backing
service. |
LazyExecutorService(ExecutorService backingService)
Creates an instance using the given
ExecutorService as the backing service. |
| Modifier and Type | Method and Description |
|---|---|
boolean |
awaitTermination(long timeout,
TimeUnit unit) |
void |
execute(Runnable command)
Always throws a RejectedExecutionException because using this method does not make sense from
either a lazy execution perspective or a cached result perspective.
|
<T> List<Future<T>> |
invokeAll(Collection<? extends Callable<T>> tasks)
ExecutorService requires that this method should not return until all tasks are completed,
which precludes lazy execution.
|
<T> List<Future<T>> |
invokeAll(Collection<? extends Callable<T>> tasks,
long timeout,
TimeUnit unit)
ExecutorService requires that this method should not return until all tasks are completed or
the timeout expires, which precludes lazy execution.
|
<T> T |
invokeAny(Collection<? extends Callable<T>> tasks)
Always throws a RejectedExecutionException because using this method does not make sense from
either a lazy execution perspective or a cached result perspective.
|
<T> T |
invokeAny(Collection<? extends Callable<T>> tasks,
long timeout,
TimeUnit unit)
Always throws a RejectedExecutionException because using this method does not make sense from
either a lazy execution perspective or a cached result perspective.
|
boolean |
isShutdown() |
boolean |
isTerminated() |
void |
shutdown()
Shuts this service down, but leaves the backing service untouched.
|
List<Runnable> |
shutdownNow()
Trying to interpret the assumptions about the contract of this method in the light of this
implementation, it seems most reasonable to take the view that all tasks are running, even if
the processing has not actually started.
|
<T> Future<T> |
submit(Callable<T> task) |
Future<?> |
submit(Runnable command) |
<T> Future<T> |
submit(Runnable task,
T result) |
public LazyExecutorService()
MoreExecutors.newDirectExecutorService() for the backing
service.public LazyExecutorService(ExecutorService backingService)
ExecutorService as the backing service.
The backing service will only be used to execute tasks and it may be shared by several instances or used for other purposes. Shutdowns of this instance will not shut down the backing service.
If you shut down the backing service, this instance will be shut down automatically and all tasks submitted to this instance that have not yet been submitted to the backing service will be considered cancelled.
public void shutdown()
shutdown in interface ExecutorService@CanIgnoreReturnValue public List<Runnable> shutdownNow()
shutdownNow in interface ExecutorServicepublic boolean isShutdown()
isShutdown in interface ExecutorServicepublic boolean isTerminated()
isTerminated in interface ExecutorServicepublic boolean awaitTermination(long timeout,
TimeUnit unit)
throws InterruptedException
awaitTermination in interface ExecutorServiceInterruptedExceptionpublic <T> Future<T> submit(Callable<T> task)
submit in interface ExecutorServicepublic <T> Future<T> submit(Runnable task, T result)
submit in interface ExecutorServicepublic Future<?> submit(Runnable command)
submit in interface ExecutorService@CanIgnoreReturnValue public <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks) throws InterruptedException
This method makes sense from a cached result perspective but not from a lazy execution perspective.
invokeAll in interface ExecutorServiceInterruptedException@CanIgnoreReturnValue public <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit) throws InterruptedException
This method makes sense from a cached result perspective but not from a lazy execution perspective.
invokeAll in interface ExecutorServiceInterruptedExceptionpublic <T> T invokeAny(Collection<? extends Callable<T>> tasks)
invokeAny in interface ExecutorServicepublic <T> T invokeAny(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)
invokeAny in interface ExecutorServiceCopyright © 2024. All rights reserved.