- 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毫秒内超时:而此代码将在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时间单位代表一秒。
-
方法摘要
所有方法 静态方法 实例方法 具体的方法 变量和类型 方法 描述 longconvert(long sourceDuration, TimeUnit sourceUnit)将给定单位的给定持续时间转换为此单位。longconvert(Duration duration)将给定的持续时间转换为此单位。static TimeUnitof(ChronoUnit chronoUnit)将ChronoUnit转换为等效值TimeUnit。voidsleep(long timeout)使用此时间单位执行Thread.sleep。voidtimedJoin(Thread thread, long timeout)使用此时间单位执行定时Thread.join。voidtimedWait(Object obj, long timeout)使用此时间单位执行定时Object.wait。ChronoUnittoChronoUnit()将此TimeUnit转换为等效值ChronoUnit。longtoDays(long duration)longtoHours(long duration)longtoMicros(long duration)longtoMillis(long duration)longtoMinutes(long duration)longtoNanos(long duration)longtoSeconds(long duration)static TimeUnitvalueOf(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
-
-