Spec-Zone.ru › Scala 2.12 Library

Трейт scala.concurrent.ExecutionContext

Компанйон объект ExecutionContext

трайт ExecutionContext extends AnyRef

Можно выполнить логику программы асинхронно, обычно, но не обязательно, в пуле потоков.

Универсальный механизм выполнения должен быть асинхронным при выполнении любого задания, переданного в его метод execute . Специализированный механизм может быть синхронным, но должен передаваться только коду, явно безопасному для выполнения в синхронно работающем механизме ExecutionContext.

API, такие как Future.onComplete, требуют предоставления обратного вызова и неявного ExecutionContext. Неявный ExecutionContext будет использоваться для выполнения обратного вызова.

Хотя можно просто импортировать scala.concurrent.ExecutionContext.Implicits.global для получения неявного ExecutionContext, разработчики приложений должны тщательно продумать, где задать политику выполнения; в идеале одно место в приложении — или в логически связанном фрагменте кода — примет решение о том, какой ExecutionContext использовать. То есть, в основном следует избегать жёсткой кодировки, особенно через импорт, scala.concurrent.ExecutionContext.Implicits.global. Рекомендуемый подход заключается в добавлении (implicit ec: ExecutionContext) к методам или параметрам конструктора класса, которым необходим ExecutionContext.

Затем локально импортируйте конкретный ExecutionContext в одном месте для всего приложения или модуля, неявно передавая его отдельным методам. В качестве альтернативы, определите локальную неявную переменную val с необходимым ExecutionContext.

Пользовательский ExecutionContext может быть уместен для выполнения кода, который блокирует выполнение ввода-вывода или выполняет длительные вычисления. ExecutionContext.fromExecutorService и ExecutionContext.fromExecutor — хорошие способы создания пользовательского ExecutionContext.

Цель ExecutionContext — лексически ограничить выполнение кода. То есть каждый метод, класс, файл, пакет или приложение определяет, как запускать свой собственный код. Это позволяет избежать проблем, таких как выполнение обратных вызовов приложения в пуле потоков, принадлежащем библиотеке сетевых операций. Размер пула потоков библиотеки сетевых операций можно безопасно настроить, зная, что будут затронуты только сетевые операции этой библиотеки. Выполнение обратных вызовов приложения можно настроить отдельно.

Аннотации
@implicitNotFound( msg = ... )
Источник
ExecutionContext.scala
Линейные надтипы
Известные подклассы

Абстрактные члены-значения

абстрактный def execute(runnable: Runnable): Unit

Выполняет блок кода в контексте этого выполнения.

runnable

задача для выполнения

абстрактный def reportFailure(cause: Throwable): Unit

Сообщает о том, что асинхронное вычисление завершилось ошибкой.

cause

причина ошибки

Члены-значения конкретного типа

final def !=(arg0: Any): Boolean

Проверка двух объектов на неравенство.

возвращает

true если !(this == that), иначе false.

Определяющие классы
AnyRef → Any

final def ##(): Int

Эквивалентно x.hashCode за исключением упакованных числовых типов и null. Для чисел возвращает значение хэша, соответствующее равенству значений: если две инстанции типа значения сравниваются как true, то ## вернёт одно и то же значение хэша для каждой из них. Для null возвращает хэш-код, где null.hashCode выбрасывает NullPointerException.

возвращает

значение хэша, соответствующее ==

Определяющие классы
AnyRef → Any

def +(other: String): String

Неявный
Этот член добавлен неявным преобразованием из ExecutionContext в any2stringadd[ExecutionContext] с помощью метода any2stringadd в scala.Predef.
Определяющие классы
any2stringadd

def ->[B](y: B): (ExecutionContext, B)

Неявный
Этот член добавлен неявным преобразованием из ExecutionContext в ArrowAssoc[ExecutionContext] с помощью метода ArrowAssoc в scala.Predef.
Определяющие классы
ArrowAssoc
Аннотации
@inline()

final def ==(arg0: Any): Boolean

Выражение x == that эквивалентно if (x eq null) that eq null else x.equals(that).

возвращает

true если объект-получатель эквивалентен аргументу; false в противном случае.

Определяющие классы
AnyRef → Any

final def asInstanceOf[T0]: T0

Преобразование объекта-получателя к типу T0.

Обратите внимание, что успех преобразования во время выполнения зависит от семантики стирания в Scala. Поэтому выражение 1.asInstanceOf[String] выбросит ClassCastException во время выполнения, а выражение List(1).asInstanceOf[List[String]] — нет. В последнем примере, поскольку аргумент типа стирается во время компиляции, невозможно проверить, относятся ли содержимое списка к требуемому типу.

возвращает

объект-получатель.

Определяющие классы
Any
Исключения

ClassCastException, если объект-получатель не является экземпляром стираемого типа T0.

def clone(): AnyRef

Создание копии объекта-получателя.

По умолчанию метод clone зависит от платформы.

возвращает

копию объекта-получателя.

Атрибуты
protected[lang]
Определяющие классы
AnyRef
Аннотации
@throws( ... ) @native()
Примечание

не указано SLS как член AnyRef

def ensuring(cond: (ExecutionContext) ⇒ Boolean, msg: ⇒ Any): ExecutionContext

Неявный
Этот член добавлен неявным преобразованием из ExecutionContext в Ensuring[ExecutionContext] с помощью метода Ensuring в scala.Predef.
Определяющие классы
Ensuring

def ensuring(cond: (ExecutionContext) ⇒ Boolean): ExecutionContext

Неявный
Этот член добавлен неявным преобразованием из ExecutionContext в Ensuring[ExecutionContext] с помощью метода Ensuring в scala.Predef.
Определяющие классы
Ensuring

def ensuring(cond: Boolean, msg: ⇒ Any): ExecutionContext

Неявный
Этот член добавлен неявным преобразованием из ExecutionContext в Ensuring[ExecutionContext] с помощью метода Ensuring в scala.Predef.
Определяющие классы
Ensuring

def ensuring(cond: Boolean): ExecutionContext

Неявный
Этот член добавлен неявным преобразованием из ExecutionContext в Ensuring[ExecutionContext] с помощью метода Ensuring в scala.Predef.
Классы-определения
Ensuring

final def eq(arg0: AnyRef): Boolean

Проверяет, является ли аргумент (that) ссылкой на объект-получатель (this).

Метод eq реализует отношение эквивалентности на непустых экземплярах AnyRef, и имеет три дополнительных свойства:

    Он согласован: для любых непустых экземпляров x и y типа AnyRef, многократные вызовы x.eq(y) последовательно возвращают true или последовательно возвращают false. Для любого непустого экземпляра x типа AnyRef, x.eq(null) и null.eq(x) возвращают false. null.eq(null) возвращает true.

При переопределении методов equals или hashCode важно обеспечить согласованность их поведения с равенством ссылок. Поэтому, если два объекта являются ссылками друг на друга (o1 eq o2), они должны быть равны друг другу (o1 == o2) и должны хешироваться до одного и того же значения (o1.hashCode == o2.hashCode).

возвращает

true если аргумент является ссылкой на объект-получатель; false в противном случае.

Классы-определения
AnyRef

def equals(arg0: Any): Boolean

Метод равенства для ссылочных типов. Реализация по умолчанию делегирует вызов методу eq.

См. также equals в scala.Any.

возвращает

true если объект-получатель эквивалентен аргументу; false в противном случае.

Классы-определения
AnyRef → Any

def finalize(): Unit

Вызывается сборщиком мусора для объекта-получателя, когда больше нет ссылок на объект.

Подробности о том, когда и как вызывается метод finalize, а также взаимодействие finalize с нелокальными возвратами и исключениями, зависят от платформы.

Атрибуты
protected[lang]
Классы-определения
AnyRef
Аннотации
@throws( classOf[java.lang.Throwable] )
Примечание

не определен в SLS как член AnyRef

def formatted(fmtstr: String): String

Возвращает строку, отформатированную в соответствии с заданной строкой format. Формат строк аналогичен формату строк String.format (@см. java.lang.String.format).

Неявный
Этот член добавлен неявным преобразованием из ExecutionContext в StringFormat[ExecutionContext] с помощью метода StringFormat в scala.Predef.
Классы-определения
StringFormat
Аннотации
@inline()

final def getClass(): Class[_]

Возвращает представление класса объекта во время выполнения.

возвращает

объект класса, соответствующий типу получателя во время выполнения.

Классы-определения
AnyRef → Any
Аннотации
@native()

def hashCode(): Int

Метод hashCode для ссылочных типов. См. hashCode в scala.Any.

возвращает

значение хэш-кода для этого объекта.

Классы-определения
AnyRef → Any
Аннотации
@native()

final def isInstanceOf[T0]: Boolean

Проверка, является ли динамический тип объекта-получателя T0.

Обратите внимание, что результат проверки зависит от стёртых типов Scala. Поэтому выражение 1.isInstanceOf[String] вернёт false, а выражение List(1).isInstanceOf[List[String]] вернёт true. В последнем примере, поскольку аргумент типа стирается во время компиляции, проверить, содержатся ли элементы списка указанного типа, невозможно.

возвращает

true если объект-получатель является экземпляром стёртого типа T0; false в противном случае.

Классы-определения
Any

final def ne(arg0: AnyRef): Boolean

Эквивалентно !(this eq that).

возвращает

true если аргумент не является ссылкой на объект-получатель; false в противном случае.

Классы-определения
AnyRef

final def notify(): Unit

Разбудит один поток, ожидающий монитора объекта-получателя.

Классы-определения
AnyRef
Аннотации
@native()
Примечание

не определен в SLS как член AnyRef

final def notifyAll(): Unit

Разбуживает все потоки, ожидающие монитора объекта-получателя.

Классы-определения
AnyRef
Аннотации
@native()
Примечание

не указано SLS в качестве члена AnyRef

final def synchronized[T0](arg0: ⇒ T0): T0

Классы-определения
AnyRef

def toString(): String

Создаёт строковое представление этого объекта. По умолчанию представление зависит от платформы. На платформе Java — это конкатенация имени класса, «@» и хэш-кода объекта в шестнадцатеричном формате.

возвращает

строковое представление объекта.

Классы-определения
AnyRef → Any

final def wait(): Unit

Классы-определения
AnyRef
Аннотации
@throws( ... )

final def wait(arg0: Long, arg1: Int): Unit

Классы-определения
AnyRef
Аннотации
@throws( ... )

final def wait(arg0: Long): Unit

Классы-определения
AnyRef
Аннотации
@throws( ... ) @native()

def →[B](y: B): (ExecutionContext, B)

Неявный
Этот член добавлен с помощью неявного преобразования из ExecutionContext в ArrowAssoc[ExecutionContext] с помощью метода ArrowAssoc в scala.Predef.
Классы-определения
ArrowAssoc

© 2002-2019 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://www.scala-lang.org/api/2.12.9/scala/concurrent/ExecutionContext.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API