WARNING: Only ever execute logic which will quickly return control to the caller.
ExecutionContext steals execution time from other threads by having its
Runnables run on the
Thread which calls
execute and then yielding back control
to the caller after *all* its
Runnables have been executed.
Nested invocations of
execute will be trampolined to prevent uncontrolled stack space growth.
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
Runnables submitted to this
as it will prevent progress by other enqueued
Runnables and the calling
Symptoms of misuse of this
ExecutionContext include, but are not limited to, deadlocks
and severe performance problems.
InterruptedExceptions will be reported to the
Deprecated and Inherited methods
Prepares for the execution of a task. Returns the prepared
execution context. The recommended implementation of
prepare is to return
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
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