Интерфейс 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: AnyRef): Boolean
Метод равенства для ссылочных типов. По умолчанию делегирует в eq.
См. также equals в scala.Any.
- возвращает
trueесли объект-получатель эквивалентен аргументу;falseв противном случае.
- Определяющие классы
- AnyRef → Any
def finalize(): Unit
Вызывается сборщиком мусора для объекта-получателя, когда к объекту больше нет ссылок.
Подробности о том, когда и если вызывается метод finalize, а также о взаимодействии между finalize и нелокальными возвратами и исключениями, зависят от платформы.
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]
Возвращает представление класса объекта во время выполнения.
- возвращает
объект класса, соответствующий типу получателя во время выполнения.
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(classOf[java.lang.InterruptedException])
final def wait(arg0: Long, arg1: Int): Unit
- Классы-определения
- AnyRef
- Аннотации
- @throws(classOf[java.lang.InterruptedException])
final def wait(arg0: Long): Unit
© 2002-2019 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://www.scala-lang.org/api/2.13.0/scala/concurrent/ExecutionContext.html
Объект
ExecutionContextдля асинхронного выполнения логики программы, обычно, но не обязательно, на пуле потоков.Общий
ExecutionContextдолжен быть асинхронным при выполнении любогоRunnable, передаваемого в его методexecute. СпециальныйExecutionContextможет быть синхронным, но должен передаваться только коду, который явно безопасен для запуска с помощью синхронно выполняющегося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заключается в лексическом ограничении выполнения кода. То есть каждый метод, класс, файл, пакет или приложение определяет, как выполнить свой код. Это позволяет избежать проблем, таких как запуск обратных вызовов приложения в пуле потоков, принадлежащем библиотеке сетевого взаимодействия. Размер пула потоков сетевой библиотеки можно безопасно настроить, зная, что на него будут влиять только сетевые операции этой библиотеки. Выполнение обратных вызовов приложения можно настроить отдельно.параметр (implicit ec: ExecutionContext) в свой метод.
ExecutionContext используется для настройки того, как и в каких
пулах потоков будут выполняться Future, поэтому конкретный ExecutionContext,
который выбран, важен.
Если ваше приложение не определяет ExecutionContext в другом месте,
рассмотрите использование глобального ExecutionContext Scala, определив
следующее:
implicit val ec: scala.concurrent.ExecutionContext = scala.concurrent.ExecutionContext.global""")