Spec-Zone.ru › Scala 3.2

Object ExecutionContext.parasitic

Исходный код

object parasitic extends ExecutionContextExecutor

ПРЕДУПРЕЖДЕНИЕ: Выполняйте только логику, которая быстро вернёт управление вызывающей стороне.

Данный ExecutionContext крадёт время выполнения у других потоков, заставляя свои Runnable работать в потоке, который вызывает execute, и затем возвращая управление вызывающей стороне после выполнения *всех* своих Runnable. Вложенные вызовы execute будут выполняться через трамплинирование, чтобы предотвратить неконтролируемый рост стека.

При использовании parasitic с абстракциями, такими как Future, в многих случаях порядок выполнения логики Thread будет непредсказуемым, поскольку зависит от того, когда/если этот Future завершится.

Не вызывайте блокирующие операции в Runnables, переданных в этот ExecutionContext, так как это помешает прогрессу других ожидающих Runnables и вызывающей Thread.

Симптомы неправильного использования этого ExecutionContext включают, но не ограничиваются, тупиками и серьёзными проблемами производительности.

Любые NonFatal или InterruptedExceptions будут сообщены defaultReporter.

Supertypes
trait ExecutionContextExecutor
trait Executor
trait ExecutionContext
class Object
trait Matchable
class Any
Self type
parasitic.type

Конкретные методы

Исходный код
final override def execute(runnable: Runnable): Unit

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

Параметры
runnable

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

Определяющие классы Executor -> ExecutionContext

Исходный код
final override def reportFailure(t: Throwable): Unit

Сообщает о том, что асинхронное вычисление завершилось с ошибкой. См. ExecutionContext.reportFailure(throwable: Throwable)

Определяющие классы BatchingExecutor -> ExecutionContext

Исходный код
final override def submitForExecution(runnable: Runnable): Unit

ОБЯЗАТЕЛЬНО должно выбрасывать NullPointerException, когда runnable равно null. При реализации синхронного BatchingExecutor, РЕКОМЕНДУЕТСЯ реализовать этот метод как runnable.run()

Определяющие классы BatchingExecutor

Наследованные методы

Исходный код
final protected def submitAsyncBatched(runnable: Runnable): Unit

ПРЕДУПРЕЖДЕНИЕ: Никогда не используйте как submitAsyncBatched , так и submitSyncBatched в одной реализации BatchingExecutor

Наследуется от BatchingExecutor (скрытый)

Исходный код
final protected def submitSyncBatched(runnable: Runnable): Unit

ПРЕДУПРЕЖДЕНИЕ: Никогда не используйте как submitAsyncBatched , так и submitSyncBatched в одной реализации BatchingExecutor

Наследуется от BatchingExecutor (скрытый)

© 2002-2022 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://scala-lang.org/api/3.2.0/scala/concurrent/ExecutionContext$$parasitic$.html

Spec-Zone.ru

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