final class TrampolineExecutionContext extends ExecutionContextExecutor
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
underlyingcontext - in case we have a runnable triggering a Scala
blockingcontext, the rest of the tasks get re-scheduled for execution on theunderlyingcontext 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.
Linear Supertypes
Ordering
- Alphabetic
- By Inheritance
Inherited
- TrampolineExecutionContext
- ExecutionContextExecutor
- Executor
- ExecutionContext
- AnyRef
- Any
- Hide All
- Show All
Visibility
- Public
- Protected
Value Members
- def execute(runnable: Runnable): Unit
- Definition Classes
- TrampolineExecutionContext → Executor → ExecutionContext
- def reportFailure(t: Throwable): Unit
- Definition Classes
- TrampolineExecutionContext → ExecutionContext
Deprecated Value Members
- def prepare(): ExecutionContext
- Definition Classes
- ExecutionContext
- Annotations
- @deprecated
- Deprecated
(Since version 2.12.0) preparation of ExecutionContexts will be removed

This is the API documentation for the Monix library.
Package Overview
monix.execution exposes lower level primitives for dealing with asynchronous execution:
Atomictypes, as alternative tojava.util.concurrent.atomicmonix.catnap exposes pure abstractions built on top of the Cats-Effect type classes:
monix.eval is for dealing with evaluation of results, thus exposing Task and Coeval.
monix.reactive exposes the
Observablepattern:Observableimplementationsmonix.tail exposes Iterant for purely functional pull based streaming:
BatchandBatchCursor, the alternatives to Scala'sIterableandIteratorrespectively that we are using within Iterant's encodingYou can control evaluation with type you choose - be it Task, Coeval, cats.effect.IO or your own as long as you provide correct cats-effect or cats typeclass instance.