Class DirectExecutorService
- All Implemented Interfaces:
com.google.common.util.concurrent.ListeningExecutorService,Executor,ExecutorService
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.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleanawaitTermination(long timeout, TimeUnit unit) voidbooleanbooleanvoidshutdown()Methods inherited from class com.google.common.util.concurrent.AbstractListeningExecutorService
newTaskFor, newTaskFor, submit, submit, submitMethods inherited from class java.util.concurrent.AbstractExecutorService
invokeAll, invokeAll, invokeAny, invokeAnyMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface java.util.concurrent.ExecutorService
invokeAny, invokeAnyMethods inherited from interface com.google.common.util.concurrent.ListeningExecutorService
awaitTermination, invokeAll, invokeAll, invokeAll, invokeAny
-
Constructor Details
-
DirectExecutorService
public DirectExecutorService()
-
-
Method Details
-
execute
-
isShutdown
public boolean isShutdown() -
shutdown
public void shutdown() -
shutdownNow
-
isTerminated
public boolean isTerminated() -
awaitTermination
- Throws:
InterruptedException
-