@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 ExecutorService
public boolean isShutdown()
isShutdown
in interface ExecutorService
public boolean isTerminated()
isTerminated
in interface ExecutorService
public boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException
awaitTermination
in interface ExecutorService
InterruptedException
public <T> Future<T> submit(Callable<T> task)
submit
in interface ExecutorService
public <T> Future<T> submit(Runnable task, T result)
submit
in interface ExecutorService
public 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 ExecutorService
InterruptedException
@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 ExecutorService
InterruptedException
public <T> T invokeAny(Collection<? extends Callable<T>> tasks)
invokeAny
in interface ExecutorService
public <T> T invokeAny(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)
invokeAny
in interface ExecutorService
Copyright © 2024. All rights reserved.