parasitic
WARNING: Only ever execute logic which will quickly return control to the caller.
WARNING: Only ever execute logic which will quickly return control to the caller.
This ExecutionContext
steals execution time from other threads by having its
Runnable
s run on the Thread
which calls execute
and then yielding back control
to the caller after *all* its Runnable
s have been executed.
Nested invocations of execute
will be trampolined to prevent uncontrolled stack space growth.
When using parasitic
with abstractions such as Future
it will in many cases be non-deterministic
as to which Thread
will be executing the logic, as it depends on when/if that Future
is completed.
Do *not* call any blocking code in the Runnable
s submitted to this ExecutionContext
as it will prevent progress by other enqueued Runnable
s and the calling Thread
.
Symptoms of misuse of this ExecutionContext
include, but are not limited to, deadlocks
and severe performance problems.
Any NonFatal
or InterruptedException
s will be reported to the defaultReporter
.
Value members
Inherited methods
WARNING: Never use both submitAsyncBatched
and submitSyncBatched
in the same
implementation of BatchingExecutor
WARNING: Never use both submitAsyncBatched
and submitSyncBatched
in the same
implementation of BatchingExecutor
- Inherited from
- BatchingExecutor
WARNING: Never use both submitAsyncBatched
and submitSyncBatched
in the same
implementation of BatchingExecutor
WARNING: Never use both submitAsyncBatched
and submitSyncBatched
in the same
implementation of BatchingExecutor
- Inherited from
- BatchingExecutor
Deprecated and Inherited methods
Prepares for the execution of a task.
Prepares for the execution of a task. Returns the prepared
execution context. The recommended implementation of
prepare
is to return this
.
This method should no longer be overridden or called. It was
originally expected that prepare
would be called by
all libraries that consume ExecutionContexts, in order to
capture thread local context. However, this usage has proven
difficult to implement in practice and instead it is
now better to avoid using prepare
entirely.
Instead, if an ExecutionContext
needs to capture thread
local context, it should capture that context when it is
constructed, so that it doesn't need any additional
preparation later.
- Deprecated
- Inherited from
- ExecutionContext