Contains factory methods for creating execution contexts.
Attributes
- Companion
- trait
- Graph
-
- Supertypes
- Self type
-
ExecutionContext.type
Members list
Type members
Classlikes
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 ExecutionContextExecutortrait Executortrait ExecutionContextclass Objecttrait Matchableclass AnyShow 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
Executorto use. Ifnull, a newExecutoris created with default configuration. - reporter
-
a function for error reporting
Attributes
- Returns
-
the
ExecutionContextusing the givenExecutor
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
Executorto use. Ifnull, a newExecutoris created with default configuration.
Attributes
- Returns
-
the
ExecutionContextusing the givenExecutor
Creates an ExecutionContext from the given ExecutorService.
Creates an ExecutionContext from the given ExecutorService.
Value parameters
- e
-
the
ExecutorServiceto use. Ifnull, a newExecutorServiceis created with default configuration. - reporter
-
a function for error reporting
Attributes
- Returns
-
the
ExecutionContextusing the givenExecutorService
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
ExecutorServiceto use. Ifnull, a newExecutorServiceis created with default configuration.
Attributes
- Returns
-
the
ExecutionContextusing the givenExecutorService
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