@Beta public class MoreExecutors extends Object
MoreExecutors| Modifier and Type | Class and Description |
|---|---|
static class |
MoreExecutors.SameThreadExecutorService |
| Constructor and Description |
|---|
MoreExecutors() |
| Modifier and Type | Method and Description |
|---|---|
static ExecutorService |
sameThreadExecutor()
Taken from @link com.google.common.util.concurrent.MoreExecutors} as it was hidden and
therefore incapable of instanceof checks.
|
public static ExecutorService sameThreadExecutor()
execute/submit, as in ThreadPoolExecutor.CallerRunsPolicy This applies both to individually submitted
tasks and to collections of tasks submitted via invokeAll or invokeAny. In the
latter case, tasks will run serially on the calling thread. Tasks are run to completion before
a Future is returned to the caller (unless the executor has been shutdown).
Although all tasks are immediately executed in the thread that submitted the task, this
ExecutorService imposes a small locking overhead on each task submission in order to
implement shutdown and termination behavior.
The implementation deviates from the ExecutorService specification with regards to the
shutdownNow method. First, "best-effort" with regards to canceling running tasks is
implemented as "no-effort". No interrupts or other attempts are made to stop threads executing
tasks. Second, the returned list will always be empty, as any submitted task is considered to
have started execution. This applies also to tasks given to invokeAll or invokeAny which are pending serial execution, even the subset of the tasks that have not yet
started execution. It is unclear from the ExecutorService specification if these
should be included, and it's much easier to implement the interpretation that they not be.
Finally, a call to shutdown or shutdownNow may result in concurrent calls to
invokeAll/invokeAny throwing RejectedExecutionException, although a subset of the
tasks may already have been executed.
Copyright © 2009-2013 jclouds. All Rights Reserved.