Spec-Zone.ru › Scala 3.1

Объект scala.concurrent.Await

Исходный код

объект Await

Await используется для обеспечения правильной обработки блокировок для Awaitable экземпляров.

Хотя иногда полезно, например, для тестирования, рекомендуется избегать использования Await всякий раз, когда это возможно, отдавая предпочтение комбинаторам и/или обратным вызовам. Методы result и ready Await будут блокировать выполнение вызывающей нити до своего возвращения, что приведет к снижению производительности и, возможно, к проблемам с тупиком.

Надтипы
класс Object
трайт Matchable
класс Any
Тип объекта
Await.type

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

Исходный код@throws(scala.Predef.classOf[scala.concurrent.TimeoutException]) @throws(scala.Predef.classOf[scala.InterruptedException])
final def ready[T](awaitable: Awaitable[T], atMost: Duration): awaitable.type

Дождаться состояния «завершено» для Awaitable.

Хотя этот метод блокирующий, внутреннее использование blocking обеспечивает возможность для базового ExecutionContext должным образом управлять блокировкой.

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

Параметры значения
atMost

максимальное время ожидания, которое может быть отрицательным (ожидание не выполняется), Duration.Inf для неограниченного ожидания или конечное положительное время

awaitable

Awaitable для ожидания

Возвращает

awaitable

Исключения
IllegalArgumentException

если atMost равно Duration.Undefined

InterruptedException

если текущая нить прерывается во время ожидания

TimeoutException

если после ожидания указанного времени Awaitable всё ещё не готов

Исходный код@throws(scala.Predef.classOf[scala.concurrent.TimeoutException]) @throws(scala.Predef.classOf[scala.InterruptedException])
final def result[T](awaitable: Awaitable[T], atMost: Duration): T

Ожидать и вернуть результат (типа T) Awaitable.

Хотя этот метод блокирующий, внутреннее использование blocking обеспечивает возможность для базового ExecutionContext должным образом управлять блокировкой.

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

Параметры значения
atMost

максимальное время ожидания, которое может быть отрицательным (ожидание не выполняется), Duration.Inf для неограниченного ожидания или конечное положительное время

awaitable

Awaitable для ожидания

Возвращает

значение результата, если awaitable завершено в течение указанного максимального времени ожидания

Исключения
IllegalArgumentException

если atMost равно Duration.Undefined

InterruptedException

если текущая нить прерывается во время ожидания

TimeoutException

если после ожидания указанного времени awaitable все еще не готов

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

Spec-Zone.ru

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