parasitic (original) (raw)
scala.concurrent.ExecutionContext.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
.
Attributes
Source
Graph
Supertypes
Self type
Members list
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
Attributes
Definition Classes
Source
Reports that an asynchronous computation failed.
Reports that an asynchronous computation failed. See ExecutionContext.reportFailure(throwable: Throwable)
Attributes
Definition Classes
Source
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()
Attributes
Definition Classes
BatchingExecutor
Source
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
Attributes
Inherited from:
BatchingExecutor (hidden)
Source
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
Attributes
Inherited from:
BatchingExecutor (hidden)
Source
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.
Attributes
Deprecated
[Since version 2.12.0]
preparation of ExecutionContexts will be removed
Inherited from:
Source
In this article