- 所有已实现的接口:
-
Serializable
,Comparable<TimeUnit>
,Constable
一个
TimeUnit
表示给定粒度单位的时间持续时间,并提供实用方法来在单位之间进行转换,并在这些单位中执行定时和延迟操作。 TimeUnit
不维护时间信息,而只是帮助组织和使用可能在各种上下文中单独维护的时间表示。 纳秒被定义为微秒的千分之一,微秒被定义为毫秒的千分之一,毫秒被定义为秒的千分之一,分钟被定义为六十秒,小时被定义为六十分钟,一天被定义为二十四小时。
TimeUnit
主要用于通知基于时间的方法如何解释给定的时间参数。 例如,如果lock
不可用,则以下代码将在50毫秒后超时:
Lock lock = ...;
if (lock.tryLock(50L, TimeUnit.MILLISECONDS)) ...
而此代码将在50秒后超时:
Lock lock = ...;
if (lock.tryLock(50L, TimeUnit.SECONDS)) ...
但请注意,并不能保证特定的超时实现能够以与给定TimeUnit
相同的粒度注意到时间的流逝。
- 自版本:
- 1.5
-
Nested Class Summary
Nested classes/interfaces declared in class java.lang.Enum
Enum.EnumDesc<E extends Enum<E>>
-
Enum Constant Summary
Enum ConstantDescription代表二十四小时的时间单位。代表六十分钟的时间单位。代表毫秒的千分之一的时间单位。代表秒的千分之一的时间单位。代表六十秒的时间单位。代表微秒的千分之一的时间单位。代表一秒的时间单位。 -
Method Summary
Modifier and TypeMethodDescriptionlong
将给定单位中的给定时间持续时间转换为此单位。long
将给定时间持续时间转换为此单位。static TimeUnit
of
(ChronoUnit chronoUnit) 将ChronoUnit
转换为等效的TimeUnit
。void
sleep
(long timeout) 使用此时间单位执行Thread.sleep
。void
使用此时间单位执行定时的Thread.join
。void
使用此时间单位执行定时的Object.wait
。将此TimeUnit
转换为等效的ChronoUnit
。long
toDays
(long duration) long
toHours
(long duration) long
toMicros
(long duration) long
toMillis
(long duration) long
toMinutes
(long duration) long
toNanos
(long duration) long
toSeconds
(long duration) static TimeUnit
返回具有指定名称的此类的枚举常量。static TimeUnit[]
values()
返回包含此枚举类的常量的数组,按声明顺序排列。
-
Enum Constant Details
-
NANOSECONDS
代表微秒的千分之一的时间单位。 -
MICROSECONDS
代表毫秒的千分之一的时间单位。 -
MILLISECONDS
代表秒的千分之一的时间单位。 -
SECONDS
代表一秒的时间单位。 -
MINUTES
代表六十秒的时间单位。- 自版本:
- 1.6
-
HOURS
代表六十分钟的时间单位。- 自版本:
- 1.6
-
DAYS
代表二十四小时的时间单位。- 自版本:
- 1.6
-
-
Method Details
-
values
返回包含此枚举类的常量的数组,按声明顺序排列。- 返回:
- 包含此枚举类的常量的数组,按声明顺序排列
-
valueOf
返回具有指定名称的此类的枚举常量。 字符串必须与在此类中声明枚举常量时使用的标识符完全匹配。(不允许存在多余的空格字符。)- 参数:
-
name
- 要返回的枚举常量的名称。 - 返回:
- 具有指定名称的枚举常量
- 抛出:
-
IllegalArgumentException
- 如果此枚举类没有具有指定名称的常量 -
NullPointerException
- 如果参数为null
-
convert
将给定单位中的给定时间持续时间转换为此单位。 从更细到更粗的粒度的转换会截断,因此会丢失精度。 例如,将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
将给定时间持续时间转换为此单位。对于任何
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) - 参数:
-
duration
- 持续时间 - 返回:
-
转换后的持续时间,如果转换会负溢出,则为
Long.MIN_VALUE
,如果转换会正溢出,则为Long.MAX_VALUE
。
-
toMicros
public long toMicros(long duration) - 参数:
-
duration
- 持续时间 - 返回:
-
转换后的持续时间,如果转换会负溢出,则为
Long.MIN_VALUE
,如果转换会正溢出,则为Long.MAX_VALUE
。
-
toMillis
public long toMillis(long duration) - 参数:
-
duration
- 持续时间 - 返回:
-
转换后的持续时间,如果转换会负溢出,则为
Long.MIN_VALUE
,如果转换会正溢出,则为Long.MAX_VALUE
。
-
toSeconds
public long toSeconds(long duration) - 参数:
-
duration
- 持续时间 - 返回:
-
转换后的持续时间,如果转换会负溢出,则为
Long.MIN_VALUE
,如果转换会正溢出,则为Long.MAX_VALUE
。
-
toMinutes
public long toMinutes(long duration) - 参数:
-
duration
- 持续时间 - 返回:
-
转换后的持续时间,如果转换会负溢出,则为
Long.MIN_VALUE
,如果转换会正溢出,则为Long.MAX_VALUE
。 - 自版本:
- 1.6
-
toHours
public long toHours(long duration) - 参数:
-
duration
- 持续时间 - 返回:
-
转换后的持续时间,如果转换会负溢出,则为
Long.MIN_VALUE
,如果转换会正溢出,则为Long.MAX_VALUE
。 - 自版本:
- 1.6
-
toDays
public long toDays(long duration) - 参数:
-
duration
- 持续时间 - 返回:
- 转换后的持续时间
- 自1.6版本起:
- 1.6
-
timedWait
使用此时间单位执行定时的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
使用此时间单位执行定时的Thread.join
。这是一个方便的方法,将时间参数转换为Thread.join
方法所需的形式。- 参数:
-
thread
- 等待的线程 -
timeout
- 最长等待时间。如果小于或等于零,则根本不等待。 - 抛出:
-
InterruptedException
- 在等待时被中断
-
sleep
使用此时间单位执行Thread.sleep
。这是一个方便的方法,将时间参数转换为Thread.sleep
方法所需的形式。- 参数:
-
timeout
- 最短休眠时间。如果小于或等于零,则根本不休眠。 - 抛出:
-
InterruptedException
- 在休眠时被中断
-
toChronoUnit
将此TimeUnit
转换为等效的ChronoUnit
。- 返回:
- 转换后的等效ChronoUnit
- 自9版本起:
- 9
-
of
将ChronoUnit
转换为等效的TimeUnit
。- 参数:
-
chronoUnit
- 要转换的ChronoUnit - 返回:
- 转换后的等效TimeUnit
- 抛出:
-
IllegalArgumentException
- 如果chronoUnit
没有等效的TimeUnit -
NullPointerException
- 如果chronoUnit
为null - 自9版本起:
- 9
-