- java.lang.Object
-
- java.lang.Enum<TimeUnit>
-
- java.util.concurrent.TimeUnit
-
- 实现的所有接口
-
Serializable
,Comparable<TimeUnit>
public enum TimeUnit extends Enum<TimeUnit>
TimeUnit
表示给定粒度单位的持续时间,并提供跨单元转换的实用方法,以及在这些单元中执行定时和延迟操作。TimeUnit
不保留时间信息,但仅帮助组织和使用可在各种上下文中单独维护的时间表示。 纳秒定义为千分之一微秒,微秒为千分之一毫秒,毫秒为千分之一秒,一分钟为六十秒,一小时为六十分钟,一天为二十四小时。TimeUnit
主要用于通知基于时间的方法如何解释给定的定时参数。 例如,如果lock
不可用,则以下代码将在50毫秒内超时:Lock lock = ...; if (lock.tryLock(50L, TimeUnit.MILLISECONDS)) ...
Lock lock = ...; if (lock.tryLock(50L, TimeUnit.SECONDS)) ...
TimeUnit
相同的粒度注意到时间的TimeUnit
。- 从以下版本开始:
- 1.5
-
-
Enum Constant Summary
Enum Constants Enum Constant 描述 DAYS
时间单位代表二十四小时。HOURS
时间单位代表六十分钟。MICROSECONDS
时间单位代表千分之一毫秒。MILLISECONDS
时间单位代表千分之一秒。MINUTES
时间单位代表六十秒。NANOSECONDS
时间单位代表千分之一微秒。SECONDS
时间单位代表一秒。
-
方法摘要
所有方法 静态方法 实例方法 具体的方法 变量和类型 方法 描述 long
convert(long sourceDuration, TimeUnit sourceUnit)
将给定单位的给定持续时间转换为此单位。long
convert(Duration duration)
将给定的持续时间转换为此单位。static TimeUnit
of(ChronoUnit chronoUnit)
将ChronoUnit
转换为等效值TimeUnit
。void
sleep(long timeout)
使用此时间单位执行Thread.sleep
。void
timedJoin(Thread thread, long timeout)
使用此时间单位执行定时Thread.join
。void
timedWait(Object obj, long timeout)
使用此时间单位执行定时Object.wait
。ChronoUnit
toChronoUnit()
将此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
valueOf(String name)
返回具有指定名称的此类型的枚举常量。static TimeUnit[]
values()
按照声明的顺序返回一个包含此枚举类型常量的数组。
-
-
-
Enum Constant Detail
-
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()
按照声明的顺序返回一个包含此枚举类型常量的数组。 此方法可用于迭代常量,如下所示:for (TimeUnit c : TimeUnit.values()) System.out.println(c);
- 结果
- 包含此枚举类型常量的数组,按声明的顺序排列
-
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 Note:
-
此方法与
Duration.toNanos()
的不同之处在于它不会在数字溢出时抛出ArithmeticException
。 - 参数
-
duration
-duration
时间 - 结果
-
转换的持续时间在此单位,或
Long.MIN_VALUE
如果转换将负溢出,或Long.MAX_VALUE
如果它会积极溢出。 - 异常
-
NullPointerException
- 如果duration
为空 - 从以下版本开始:
- 11
- 另请参见:
-
Duration.of(long,TemporalUnit)
-
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
public void timedWait(Object obj, long timeout) throws InterruptedException
使用此时间单位执行定时Object.wait
。 这是一种便捷方法,可将超时参数转换为Object.wait
方法所需的Object.wait
。例如,您可以使用
poll
方法实现阻止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.join
。- 参数
-
thread
- 等待的主题 -
timeout
- 等待的最长时间。 如果小于或等于零,则不要等待。 - 异常
-
InterruptedException
- 等待时中断
-
sleep
public void sleep(long timeout) throws InterruptedException
使用此时间单位执行Thread.sleep
。 这是一种便捷方法,可将时间参数转换为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
为空 - 从以下版本开始:
- 9
-
-