ExecutionContext

scala.concurrent.ExecutionContext
See theExecutionContext companion trait

Contains factory methods for creating execution contexts.

Attributes

Companion
trait
Graph
Supertypes
class Object
trait Matchable
class Any
Self type

Members list

Type members

Classlikes

object Implicits

Attributes

Supertypes
class Object
trait Matchable
class Any
Self type
Implicits.type

WARNING: Only ever execute logic which will quickly return control to the caller.

WARNING: Only ever execute logic which will quickly return control to the caller.

This ExecutionContext steals execution time from other threads by having its Runnables run on the Thread which calls execute and then yielding back control to the caller after all its Runnables 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 Runnables submitted to this ExecutionContext as it will prevent progress by other enqueued Runnables and the calling Thread.

Symptoms of misuse of this ExecutionContext include, but are not limited to, deadlocks and severe performance problems.

Any NonFatal or InterruptedExceptions will be reported to the defaultReporter.

Attributes

Supertypes
trait Executor
class Object
trait Matchable
class Any
Show all
Self type
parasitic.type

Value members

Concrete methods

Creates an ExecutionContext from the given Executor.

Creates an ExecutionContext from the given Executor.

Value parameters

e

the Executor to use. If null, a new Executor is created with default configuration.

reporter

a function for error reporting

Attributes

Returns

the ExecutionContext using the given Executor

Creates an ExecutionContext from the given Executor with the default reporter.

Creates an ExecutionContext from the given Executor with the default reporter.

Value parameters

e

the Executor to use. If null, a new Executor is created with default configuration.

Attributes

Returns

the ExecutionContext using the given Executor

Creates an ExecutionContext from the given ExecutorService.

Creates an ExecutionContext from the given ExecutorService.

Value parameters

e

the ExecutorService to use. If null, a new ExecutorService is created with default configuration.

reporter

a function for error reporting

Attributes

Returns

the ExecutionContext using the given ExecutorService

Creates an ExecutionContext from the given ExecutorService with the default reporter.

Creates an ExecutionContext from the given ExecutorService with the default reporter.

If it is guaranteed that none of the executed tasks are blocking, a single-threaded ExecutorService can be used to create an ExecutionContext as follows:

import java.util.concurrent.Executors
val ec = ExecutionContext.fromExecutorService(Executors.newSingleThreadExecutor())

Value parameters

e

the ExecutorService to use. If null, a new ExecutorService is created with default configuration.

Attributes

Returns

the ExecutionContext using the given ExecutorService

Concrete fields

The default reporter simply prints the stack trace of the Throwable to System.err.

The default reporter simply prints the stack trace of the Throwable to System.err.

Attributes

Returns

the function for error reporting

The explicit global ExecutionContext. Invoke global when you want to provide the global ExecutionContext explicitly.

The explicit global ExecutionContext. Invoke global when you want to provide the global ExecutionContext explicitly.

The default ExecutionContext implementation is backed by a work-stealing thread pool. It can be configured via the following scala.sys.SystemProperties:

scala.concurrent.context.minThreads = defaults to "1" scala.concurrent.context.numThreads = defaults to "x1" (i.e. the current number of available processors * 1) scala.concurrent.context.maxThreads = defaults to "x1" (i.e. the current number of available processors * 1) scala.concurrent.context.maxExtraThreads = defaults to "256"

The pool size of threads is then numThreads bounded by minThreads on the lower end and maxThreads on the high end.

The maxExtraThreads is the maximum number of extra threads to have at any given time to evade deadlock, see scala.concurrent.BlockContext.

Attributes

Returns

the global ExecutionContext