Пакет scala.concurrent.duration.scala.concurrent.duration
Классы
Исходный код
Этот класс хранит срок, полученный с помощью Deadline.now или с помощью синтаксического сахара для работы со временем:
import scala.concurrent.duration._ 3.seconds.fromNow
Его основное назначение — управлять повторными попытками достижения чего-либо (например, ожидания условия), предоставляя методы hasTimeLeft и timeLeft. Все продолжительности измеряются по System.nanoTime; это не учитывает изменения системного времени (например, високосные секунды).
| Компаньон | объект |
|---|
Исходный код
объект Срок
| Компаньон | класс |
|---|
Исходный код
Исходный код
объект Duration
| Компаньон | класс |
|---|
Исходный код
абстрактный запечатанный класс Продолжительность extends Serializable with Ordered[Продолжительность]
Утилита для работы с продолжительностями java.util.concurrent.TimeUnit.
Этот класс не предназначен для общего представления времени, он оптимизирован для потребностей scala.concurrent.
Основное использование
Примеры:
import scala.concurrent.duration._ val duration = Duration(100, MILLISECONDS) val duration = Duration(100, "millis") duration.toNanos duration < 1.second duration <= Duration.Inf
Вызов невыразимых преобразований (например, вызов toSeconds для бесконечной продолжительности) приведет к исключению IllegalArgumentException.
Также предоставляются неявные преобразования для Int, Long и Double. Пример использования:
import scala.concurrent.duration._ val duration = 100.millis
Синтаксический сахар, предоставленный неявными преобразованиями, всегда позволяет создавать конечные продолжительности, даже для бесконечных значений Double; используйте Duration.Inf вместо этого.
Также включены экстрактры, парсинг и арифметика:
val d = Duration("1.2 µs")
val Duration(length, unit) = 5 millis
val d2 = d * 2.5
val d3 = d2 + 1.millisecond
Обработка единиц измерения времени
Вычисления, выполняемые с конечными продолжительностями, всегда сохраняют более точную единицу измерения обоих операндов, независимо от того, может ли более грубая единица точно выразить ту же продолжительность. Это означает, что Duration может использоваться как бескомпромиссный контейнер для пары (длина, единица измерения), если он был создан с помощью соответствующих методов и над ним не выполнялась арифметика; в этом случае сложение/вычитание продолжительностей следует производить с осторожностью.
Соответствие семантике Double
Семантика арифметических операций над Duration двойная:
- точное сложение/вычитание с разрешением в наносекунды для конечных продолжительностей, независимо от величины слагаемых - изоморфно java.lang.Double в отношении бесконечных или неопределенных значений
Преобразование между Duration и Double выполняется с помощью Duration.toUnit (с единицей NANOSECONDS) и Duration.fromNanos(Double)
Сортировка
Стандартный порядок соответствует порядку чисел Double, что означает, что Undefined считается больше всех остальных продолжительностей, включая Duration.Inf.
| Компаньон | объект |
|---|
Исходный код
трайт DurationConversions
| Компаньон | объект |
|---|
Исходный код
объект DurationConversions
Этот объект просто содержит некоторые детали, которые заставляют машину синтаксического сахара работать, но не для прямого использования.
| Компаньон | класс |
|---|
Исходный код
Исходный код
Исходный код
Исходный код
объект FiniteDuration
| Компаньон | класс |
|---|
Исходный код
Этот класс представляет конечную продолжительность. Операторы сложения и вычитания перегружены, чтобы гарантировать это статически. Диапазон этого класса ограничен +-(2^63-1)ns, which is roughly 292 years.
| Компаньон | объект |
|---|
Исходный код
Исходный код
Исходный код
объект fromNow
Этот объект можно использовать в качестве закрывающего токена для объявления срока в какой-то будущий момент времени:
import scala.concurrent.duration._ val deadline = 3 seconds fromNow
Исходный код
объект span
Этот объект можно использовать в качестве закрывающего токена, если вы предпочитаете точечный стиль, но не хотите активировать language.postfixOps:
import scala.concurrent.duration._ val duration = 2 seconds span
Типы
Исходный код
Конкретные поля
Исходный код
Исходный код
Исходный код
окончательный значение МИКРОСЕКУНДЫ: TimeUnit
Исходный код
окончательный значение МИЛЛИСЕКУНДЫ: TimeUnit
Исходный код
Исходный код
окончательный значение НАНОСЕКУНДЫ: TimeUnit
Исходный код
Неявные преобразования
Источник
Источник
Источник
Источник
Источник
Источник
Источник
Источник
Источник
© 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/duration.html