Трейт scala.concurrent.ExecutionContext
Компанйон объект ExecutionContext
трайт ExecutionContext extends AnyRef
Члены-значения конкретного типа
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 зависит от платформы.
- возвращает
копию объекта-получателя.
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[_]
Возвращает представление класса объекта во время выполнения.
- возвращает
объект класса, соответствующий типу получателя во время выполнения.
def hashCode(): Int
Метод hashCode для ссылочных типов. См. hashCode в scala.Any.
- возвращает
значение хэш-кода для этого объекта.
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
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
Можно выполнить логику программы асинхронно, обычно, но не обязательно, в пуле потоков.
Универсальный механизм выполнения должен быть асинхронным при выполнении любого задания, переданного в его метод
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— лексически ограничить выполнение кода. То есть каждый метод, класс, файл, пакет или приложение определяет, как запускать свой собственный код. Это позволяет избежать проблем, таких как выполнение обратных вызовов приложения в пуле потоков, принадлежащем библиотеке сетевых операций. Размер пула потоков библиотеки сетевых операций можно безопасно настроить, зная, что будут затронуты только сетевые операции этой библиотеки. Выполнение обратных вызовов приложения можно настроить отдельно.