java.lang.Object java.lang.Enum<TimeUnit> java.util.concurrent.TimeUnit
TimeUnit 表示给定单元粒度的时间段,它提供在这些单元中进行跨单元转换和执行计时及延迟操作的实用工具方法。TimeUnit 不维护时间信息,但是有助于组织和使用可能跨各种上下文单独维护的时间表示形式。毫微秒定义为千分之一微秒,微秒为千分之一毫秒,毫秒为千分之一秒,一分钟为六十秒,一小时为六十分钟,一天为二十四小时。
TimeUnit 主要用于通知基于时间的方法如何解释给定的计时参数。例如,如果 lock
不可用,则以下代码将在 50 毫秒后超时:
Lock lock = ...; if ( lock.tryLock(50L, TimeUnit.MILLISECONDS) ) ...而以下代码将在 50 秒后超时:
Lock lock = ...; if ( lock.tryLock(50L, TimeUnit.SECONDS) ) ...但是注意,不保证特定超时实现能够以与给定 TimeUnit 相同的粒度通知 段。
枚举常量摘要 | |
---|---|
DAYS |
|
HOURS |
|
MICROSECONDS |
|
MILLISECONDS |
|
MINUTES |
|
NANOSECONDS |
|
SECONDS |
方法摘要 | |
---|---|
long |
convert(long sourceDuration, TimeUnit sourceUnit) 将给定单元的时间段转换到此单元。 |
void |
sleep(long timeout) 使用此单元执行 Thread.sleep.这是将时间参数转换为 Thread.sleep 方法所需格式的便捷方法。 |
void |
timedJoin(Thread thread, long timeout) 使用此时间单元执行计时的 Thread.join。 |
void |
timedWait(Object obj, long timeout) 使用此时间单元执行计时的 Object.wait。 |
long |
toDays(long duration) 等效于 DAYS.convert(duration, this)。 |
long |
toHours(long duration) 等效于 HOURS.convert(duration, this)。 |
long |
toMicros(long duration) 等效于 MICROSECONDS.convert(duration, this)。 |
long |
toMillis(long duration) 等效于 MILLISECONDS.convert(duration, this)。 |
long |
toMinutes(long duration) 等效于 MINUTES.convert(duration, this)。 |
long |
toNanos(long duration) 等效于 NANOSECONDS.convert(duration, this)。 |
long |
toSeconds(long duration) 等效于 SECONDS.convert(duration, this)。 |
static TimeUnit |
valueOf(String name) 返回带有指定名称的该类型的枚举常量。 |
static TimeUnit[] |
values() Returns an array containing the constants of this enum type, in the order they are declared. |
从类 java.lang.Enum 继承的方法 |
---|
clone, compareTo, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf |
从类 java.lang.Object 继承的方法 |
---|
getClass, notify, notifyAll, wait, wait, wait |
枚举常量详细信息 |
---|
public static final TimeUnit NANOSECONDS
public static final TimeUnit MICROSECONDS
public static final TimeUnit MILLISECONDS
public static final TimeUnit SECONDS
public static final TimeUnit MINUTES
public static final TimeUnit HOURS
public static final TimeUnit DAYS
方法详细信息 |
---|
public static final TimeUnit[] values()
for(TimeUnit c : TimeUnit.values()) System.out.println(c);
public static TimeUnit valueOf(String name)
指定要返回的枚举常量的名称。
-
如果该枚举类型没有带有指定名称的常量,
- 则抛出 IllegalArgumentException
public long convert(long sourceDuration, TimeUnit sourceUnit)
例如,要将 10 分钟转换为毫秒,请使用:TimeUnit.MILLISECONDS.convert(10L, TimeUnit.MINUTES)
sourceDuration
- 给定
sourceUnit 中的时间段
sourceUnit
-
sourceDuration 参数的单元
public long toNanos(long duration)
duration
- 时间段
convert(long, java.util.concurrent.TimeUnit)
public long toMicros(long duration)
duration
- 时间段
convert(long, java.util.concurrent.TimeUnit)
public long toMillis(long duration)
duration
- 时间段
convert(long, java.util.concurrent.TimeUnit)
public long toSeconds(long duration)
duration
- 时间段
convert(long, java.util.concurrent.TimeUnit)
public long toMinutes(long duration)
duration
- 时间段
convert(long, java.util.concurrent.TimeUnit)
public long toHours(long duration)
duration
- 时间段
convert(long, java.util.concurrent.TimeUnit)
public long toDays(long duration)
duration
- 时间段
convert(long, java.util.concurrent.TimeUnit)
public void timedWait(Object obj, long timeout) throws InterruptedException
例如,可以使用以下代码实现阻塞 poll 方法(参见 BlockingQueue.poll
):
public synchronized Object poll(long timeout, TimeUnit unit) throws InterruptedException { while (empty) { unit.timedWait(this, timeout); ... } }
obj
- 要等待的对象
timeout
- 要等待的最长时间。如果小于等于 0,则根本不会等待。
InterruptedException
- 如果等待时中断。
Object.wait(long, int)
public void timedJoin(Thread thread, long timeout) throws InterruptedException
thread
- 要等待的线程
timeout
- 要等待的最长时间。如果小于等于 0,则根本不会等待。
InterruptedException
- 如果等待时中断。
Thread.join(long, int)
public void sleep(long timeout) throws InterruptedException
timeout
- 休眠的最短时间。如果小于等于 0,则根本不会休眠。
InterruptedException
- 如果休眠时中断。
Thread.sleep(long)