Packages

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 underlying context
  • in case we have a runnable triggering a Scala blocking context, the rest of the tasks get re-scheduled for execution on the underlying 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.

Source
TrampolineExecutionContext.scala
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. TrampolineExecutionContext
  2. ExecutionContextExecutor
  3. Executor
  4. ExecutionContext
  5. AnyRef
  6. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Value Members

  1. def execute(runnable: Runnable): Unit
    Definition Classes
    TrampolineExecutionContext → Executor → ExecutionContext
  2. def reportFailure(t: Throwable): Unit
    Definition Classes
    TrampolineExecutionContext → ExecutionContext

Deprecated Value Members

  1. def prepare(): ExecutionContext
    Definition Classes
    ExecutionContext
    Annotations
    @deprecated
    Deprecated

    (Since version 2.12.0) preparation of ExecutionContexts will be removed