parasitic
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
.
- Source:
- ExecutionContext.scala
Value members
Concrete methods
Runs a block of code on this execution context.
Runs a block of code on this execution context.
- Value parameters:
- runnable
the task to execute
- Definition Classes
- Source:
- ExecutionContext.scala
Reports that an asynchronous computation failed.
Reports that an asynchronous computation failed.
See ExecutionContext.reportFailure(throwable: Throwable)
- Definition Classes
- BatchingExecutor -> ExecutionContext
- Source:
- ExecutionContext.scala
MUST throw a NullPointerException when runnable
is null
When implementing a sync BatchingExecutor, it is RECOMMENDED
to implement this method as runnable.run()
MUST throw a NullPointerException when runnable
is null
When implementing a sync BatchingExecutor, it is RECOMMENDED
to implement this method as runnable.run()
- Definition Classes
- BatchingExecutor
- Source:
- ExecutionContext.scala
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 (hidden)
- Source:
- BatchingExecutor.scala
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 (hidden)
- Source:
- BatchingExecutor.scala
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
- Source:
- ExecutionContext.scala