- 所有已实现的接口:
-
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 ConstantsEnum ConstantDescription代表二十四小时的时间单位。代表六十分钟的时间单位。代表毫秒的千分之一的时间单位。代表秒的千分之一的时间单位。代表六十秒的时间单位。代表微秒的千分之一的时间单位。代表一秒的时间单位。 -
Method Summary
Modifier and TypeMethodDescriptionlong将给定单位中的给定时间持续时间转换为此单位。long将给定时间持续时间转换为此单位。static TimeUnitof(ChronoUnit chronoUnit) 将ChronoUnit转换为等效的TimeUnit。voidsleep(long timeout) 使用此时间单位执行Thread.sleep。void使用此时间单位执行定时的Thread.join。void使用此时间单位执行定时的Object.wait。将此TimeUnit转换为等效的ChronoUnit。longtoDays(long duration) longtoHours(long duration) longtoMicros(long duration) longtoMillis(long duration) longtoMinutes(long duration) longtoNanos(long duration) longtoSeconds(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
-