Класс перечисления TimeUnit
- Все реализованные интерфейсы:
Serializable, Comparable<TimeUnit>, Constable
public enum TimeUnit extends Enum<TimeUnit>
TimeUnit представляет длительность времени с заданной точностью и предоставляет служебные методы для преобразования между единицами, а также для выполнения операций измерения времени и задержки в этих единицах. TimeUnit не хранит сведения о времени, а лишь помогает организовывать и использовать представления времени, которые могут храниться отдельно в различных контекстах. Наносекунда определяется как одна тысячная микросекунды, микросекунда — как одна тысячная миллисекунды, миллисекунда — как одна тысячная секунды, минута — как шестьдесят секунд, час — как шестьдесят минут, а сутки — как двадцать четыре часа. TimeUnit используется главным образом для указания методам, зависящим от времени, того, как следует интерпретировать заданный параметр времени. Например, следующий код завершится по тайм-ауту через 50 миллисекунд, если lock недоступна:
Lock lock = ...;
if (lock.tryLock(50L, TimeUnit.MILLISECONDS)) ... в то время как этот код завершится по тайм-ауту через 50 секунд: Lock lock = ...;
if (lock.tryLock(50L, TimeUnit.SECONDS)) ... Следует учитывать, что нет гарантии, что конкретная реализация тайм-аута сможет отслеживать ход времени с точностью, соответствующей заданной TimeUnit.- Начиная с:
- 1.5
Краткое описание вложенных классов
Вложенные классы и интерфейсы, объявленные в классе Enum
Enum.EnumDesc<E>
Краткое описание констант перечисления
| Константа перечисления | Описание |
|---|---|
DAYS |
Единица времени, представляющая двадцать четыре часа. |
HOURS |
Единица времени, представляющая шестьдесят минут. |
MICROSECONDS |
Единица времени, представляющая одну тысячную миллисекунды. |
MILLISECONDS |
Единица времени, представляющая одну тысячную секунды. |
MINUTES |
Единица времени, представляющая шестьдесят секунд. |
NANOSECONDS |
Единица времени, представляющая одну тысячную микросекунды. |
SECONDS |
Единица времени, представляющая одну секунду. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
long |
convert |
Преобразует заданную длительность времени из указанной единицы в эту единицу. |
long |
convert |
Преобразует заданную длительность времени в эту единицу. |
static TimeUnit |
of |
Преобразует ChronoUnit в эквивалентный TimeUnit. |
void |
sleep |
Выполняет Thread.sleep с использованием этой единицы времени. |
void |
timedJoin |
Выполняет Thread.join с заданным временем ожидания, используя эту единицу времени. |
void |
timedWait |
Выполняет Object.wait с заданным временем ожидания, используя эту единицу времени. |
ChronoUnit |
toChronoUnit() |
Преобразует эту TimeUnit в эквивалентную ChronoUnit. |
long |
toDays |
Эквивалентно DAYS.convert(duration, this). |
long |
toHours |
Эквивалентно HOURS.convert(duration, this). |
long |
toMicros |
Эквивалентно MICROSECONDS.convert(duration, this). |
long |
toMillis |
Эквивалентно MILLISECONDS.convert(duration, this). |
long |
toMinutes |
Эквивалентно MINUTES.convert(duration, this). |
long |
toNanos |
Эквивалентно NANOSECONDS.convert(duration, this). |
long |
toSeconds |
Эквивалентно SECONDS.convert(duration, this). |
static TimeUnit |
valueOf |
Возвращает константу перечисления этого класса с указанным именем. |
static TimeUnit[] |
values() |
Возвращает массив, содержащий константы этого класса перечисления в порядке их объявления. |
Подробное описание констант перечисления
NANOSECONDS
public static final TimeUnit NANOSECONDS
MICROSECONDS
public static final TimeUnit MICROSECONDS
MILLISECONDS
public static final TimeUnit MILLISECONDS
SECONDS
public static final TimeUnit SECONDS
MINUTES
public static final TimeUnit MINUTES
- Начиная с:
- 1.6
HOURS
public static final TimeUnit HOURS
- Начиная с:
- 1.6
DAYS
public static final TimeUnit DAYS
- Начиная с:
- 1.6
Подробное описание методов
values
public static TimeUnit[] values()
- Возвращает:
- массив, содержащий константы этого класса перечисления в порядке их объявления
valueOf
public static TimeUnit valueOf(String name)
- Параметры:
-
name— имя константы перечисления, которую необходимо вернуть. - Возвращает:
- константу перечисления с указанным именем
- Вызывает исключение:
-
IllegalArgumentException— если в этом классе перечисления нет константы с указанным именем -
NullPointerException— если аргумент равен null
convert
public long convert(long sourceDuration, TimeUnit sourceUnit)
999 миллисекунд в секунды дает 0. При преобразовании из менее точных единиц в более точные, если аргументы могут привести к числовому переполнению, результат ограничивается значением Long.MIN_VALUE при отрицательном переполнении или Long.MAX_VALUE при положительном переполнении. Например, чтобы преобразовать 10 минут в миллисекунды, используйте: TimeUnit.MILLISECONDS.convert(10L, TimeUnit.MINUTES)
- Параметры:
-
sourceDuration— длительность времени в указаннойsourceUnit -
sourceUnit— единица измерения аргументаsourceDuration - Возвращает:
- преобразованную длительность в этой единице или
Long.MIN_VALUEпри отрицательном переполнении во время преобразования либоLong.MAX_VALUEпри положительном переполнении.
convert
public long convert(Duration duration)
Для любой TimeUnit unit, unit.convert(Duration.ofNanos(n)) эквивалентно unit.convert(n, NANOSECONDS), а unit.convert(Duration.of(n, unit.toChronoUnit())) эквивалентно n (при отсутствии переполнения).
- Примечание API:
- Этот метод отличается от
Duration.toNanos()тем, что не выбрасываетArithmeticExceptionпри числовом переполнении. - Параметры:
-
duration— длительность времени - Возвращает:
- преобразованную длительность в этой единице или
Long.MIN_VALUEпри отрицательном переполнении во время преобразования либоLong.MAX_VALUEпри положительном переполнении. - Вызывает исключение:
-
NullPointerException— еслиdurationравен null - Начиная с:
- 11
- См. также:
toNanos
public long toNanos(long duration)
NANOSECONDS.convert(duration, this).- Параметры:
-
duration— длительность - Возвращает:
- преобразованную длительность или
Long.MIN_VALUEпри отрицательном переполнении во время преобразования либоLong.MAX_VALUEпри положительном переполнении.
toMicros
public long toMicros(long duration)
MICROSECONDS.convert(duration, this).- Параметры:
-
duration— длительность - Возвращает:
- преобразованную длительность или
Long.MIN_VALUEпри отрицательном переполнении во время преобразования либоLong.MAX_VALUEпри положительном переполнении.
toMillis
public long toMillis(long duration)
MILLISECONDS.convert(duration, this).- Параметры:
-
duration— длительность - Возвращает:
- преобразованную длительность или
Long.MIN_VALUEпри отрицательном переполнении во время преобразования либоLong.MAX_VALUEпри положительном переполнении.
toSeconds
public long toSeconds(long duration)
SECONDS.convert(duration, this).- Параметры:
-
duration— длительность - Возвращает:
- преобразованную длительность или
Long.MIN_VALUEпри отрицательном переполнении во время преобразования либоLong.MAX_VALUEпри положительном переполнении.
toMinutes
public long toMinutes(long duration)
MINUTES.convert(duration, this).- Параметры:
-
duration— длительность - Возвращает:
- преобразованную длительность или
Long.MIN_VALUEпри отрицательном переполнении во время преобразования либоLong.MAX_VALUEпри положительном переполнении. - Начиная с:
- 1.6
toHours
public long toHours(long duration)
HOURS.convert(duration, this).- Параметры:
-
duration— длительность - Возвращает:
- преобразованную длительность или
Long.MIN_VALUEпри отрицательном переполнении во время преобразования либоLong.MAX_VALUEпри положительном переполнении. - Начиная с:
- 1.6
toDays
public long toDays(long duration)
DAYS.convert(duration, this).- Параметры:
-
duration— длительность - Возвращает:
- преобразованную длительность
- Начиная с:
- 1.6
timedWait
public void timedWait(Object obj, long timeout) throws InterruptedException
Object.wait с заданным временем ожидания, используя эту единицу времени. Этот вспомогательный метод преобразует аргументы тайм-аута в форму, требуемую методом Object.wait. Например, можно реализовать блокирующий метод poll (см. BlockingQueue.poll) следующим образом:
public E poll(long timeout, TimeUnit unit)
throws InterruptedException {
synchronized (lock) {
while (isEmpty()) {
unit.timedWait(lock, timeout);
...
}
}
}
- Параметры:
-
obj— объект, ожидания которого следует дождаться -
timeout— максимальное время ожидания. Если значение меньше или равно нулю, ожидание не выполняется. - Вызывает исключение:
-
InterruptedException— если во время ожидания произошло прерывание
timedJoin
public void timedJoin(Thread thread, long timeout) throws InterruptedException
Thread.join с заданным временем ожидания, используя эту единицу времени. Этот вспомогательный метод преобразует аргументы времени в форму, требуемую методом Thread.join.- Параметры:
-
thread— поток, завершения которого нужно дождаться -
timeout— максимальное время ожидания. Если значение меньше или равно нулю, ожидание не выполняется. - Вызывает исключение:
-
InterruptedException— если во время ожидания произошло прерывание
sleep
public void sleep(long timeout) throws InterruptedException
Thread.sleep с использованием этой единицы времени. Этот вспомогательный метод преобразует аргументы времени в форму, требуемую методом Thread.sleep.- Параметры:
-
timeout— минимальное время сна. Если значение меньше или равно нулю, сон не выполняется. - Вызывает исключение:
-
InterruptedException— если во время сна произошло прерывание
toChronoUnit
public ChronoUnit toChronoUnit()
TimeUnit в эквивалентную ChronoUnit.- Возвращает:
- эквивалентную преобразованную ChronoUnit
- Начиная с:
- 9
of
public static TimeUnit of(ChronoUnit chronoUnit)
ChronoUnit в эквивалентную TimeUnit.- Параметры:
-
chronoUnit— ChronoUnit для преобразования - Возвращает:
- эквивалентную преобразованную TimeUnit
- Вызывает исключение:
-
IllegalArgumentException— если дляchronoUnitнет эквивалентной TimeUnit -
NullPointerException— еслиchronoUnitравен null - Начиная с:
- 9
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/concurrent/TimeUnit.html