- 所有已实现的接口:
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
-
内部类总结
在类 java.lang.Enum 中声明的嵌套类/接口
Enum.EnumDesc<E extends Enum<E>> -
枚举常量总结
枚举常量枚举常量描述代表二十四小时的时间单位。代表六十分钟的时间单位。表示千分之一毫秒的时间单位。表示千分之一秒的时间单位。代表六十秒的时间单位。表示千分之一微秒的时间单位。时间单位代表一秒。 -
方法总结
修饰符和类型方法描述long将给定单位的给定持续时间转换为该单位。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()返回一个数组,其中包含此枚举类的常量,按照它们声明的顺序排列。
-
枚举常量详细信息
-
NANOSECONDS
表示千分之一微秒的时间单位。 -
MICROSECONDS
表示千分之一毫秒的时间单位。 -
MILLISECONDS
表示千分之一秒的时间单位。 -
SECONDS
时间单位代表一秒。 -
MINUTES
代表六十秒的时间单位。- 自从:
- 1.6
-
HOURS
代表六十分钟的时间单位。- 自从:
- 1.6
-
DAYS
代表二十四小时的时间单位。- 自从:
- 1.6
-
-
方法详情
-
values
返回一个数组,其中包含此枚举类的常量,按照它们声明的顺序排列。- 返回:
- 包含此枚举类常量的数组,按照它们声明的顺序排列
-
valueOf
返回具有指定名称的此类的枚举常量。字符串必须匹配确切地用于在此类中声明枚举常量的标识符。 (不允许使用无关的空白字符。)- 参数:
name- 要返回的枚举常量的名称。- 返回:
- 具有指定名称的枚举常量
- 抛出:
IllegalArgumentException- 如果此枚举类没有具有指定名称的常量NullPointerException- 如果参数为空
-
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
将给定的持续时间转换为此单位。对于任何 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为空- 自从:
- 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
-
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
-
of
将ChronoUnit转换为等效的TimeUnit。- 参数:
chronoUnit- 要转换的 ChronoUnit- 返回:
- 转换后的等效 TimeUnit
- 抛出:
IllegalArgumentException- 如果chronoUnit没有等效的 TimeUnitNullPointerException- 如果chronoUnit为空- 自从:
- 9
-