A scala.concurrentExecutionContext
implementation
that executes runnables immediately, on the current thread,
by means of a trampoline implementation.
Can be used in some cases to keep the asynchronous execution on the current thread, as an optimization, but be warned, you have to know what you're doing.
The TrampolineExecutionContext
keeps a reference to another
underlying
context, to which it defers for:
- reporting errors
- deferring the rest of the queue in problematic situations
Deferring the rest of the queue happens:
- in case we have a runnable throwing an exception, the rest
of the tasks get re-scheduled for execution by using
the
underlying
context - in case we have a runnable triggering a Scala
blocking
context, the rest of the tasks get re-scheduled for execution on theunderlying
context to prevent any deadlocks
Thus this implementation is compatible with the
scala.concurrent.BlockContext
, detecting blocking
blocks and
reacting by forking the rest of the queue to prevent deadlocks.
- Value parameters:
- underlying
is the
ExecutionContext
to which the it defers to in case real asynchronous is needed
- Companion:
- object
trait ExecutionContextExecutor
trait Executor
trait ExecutionContext
class Object
trait Matchable
class Any
Value members
Concrete methods
Deprecated and Inherited methods
@deprecated(message = "preparation of ExecutionContexts will be removed", since = "2.12.0")
- Deprecated
[Since version 2.12.0]
preparation of ExecutionContexts will be removed- Inherited from:
- ExecutionContext