publicenumtimeunitextendsenumtimeunittimeunit表示给定单元格粒度的时间段,并提供在这些单元格之间进行转换、计时和延迟操作的实用程序方法。 TimeUnit不维护时间信息,但它有助于组织和使用可能在各种上下文中单独维护的时间表示形式。 TimeUnit主要用于通知如何用基于时间的方法解释给定的定时参数。 例如,如果lock不可用,则以下代码将在50毫秒后超时。 Locklock=. iflock.trylock50L,TimeUnit.MILLISECONDS )……以下代码将在50秒后超时。 Locklock=; lock.trylock 50L,TimeUnit.SECONDS ) . 但是,请注意,不能保证特定超时实现可以以与特定TimeUnit相同的粒度通知段。 从以下版本开始: 1.5枚举常量摘要MICROSECONDS微秒百万分之一秒毫秒/1000 ) MILLISECONDS毫秒千分之一秒NANOSECONDS纳秒十亿分之一秒)微秒/1000 ) SECONDS秒MINUTES 这是将时间参数转换为Thread.sleep方法所需格式的方便方法。 voidtimedjointhreadthread,longtimeout )是使用此时间单元执行计时的Thread.join。 voidtimedwaitobjectobj,longtimeout )是使用此时间单元执行计时的Object.wait。 longtomicroslongduration )等效于microseconds.convert this ) duration,this )。 longtomillislongduration )等效于milliseconds.convert this )。 longtonanoslongduration )等效于nanoseconds.convert this )。 长龙
toSecondslong duration)
等效于 SECONDS.convertduration, this)。
static TimeUnit valueOfString name)
返回带有指定名称的该类型的枚举常量。
static TimeUnit[] values)
按照声明该枚举类型的常量的顺序,返回包含这些常量的数组。
注意1:它的常量MICROSECONDS,MILLISECONDS,NANOSECONDS,SECONDS都是TimeUnit类型
注意2 :convertlong duration, TimeUnit unit)的意思将duration这个时间转化为本对象(this)所表示的时间形式。
本对象可能MICROSECONDS,MILLISECONDS,NANOSECONDS,SECONDS的一种。
至于duration是哪种形式的时间(MICROSECONDS,MILLISECONDS,NANOSECONDS,SECONDS的一种),
则是通过参数TimeUnit unit来确定的
注意3 : TimeUnit是enum(枚举)类型,不能通过外部来实例化 。
对用户来说只有它内部定义的下常量可用:MICROSECONDS,MILLISECONDS,NANOSECONDS,SECONDS,MINUTES,HOURS,DAYS
注意4:对于常量MINUTES,HOURS,DAYS,在Java1.5和Android中并没看到,但是在Java1.6中却有。
注意5:关于枚举类型的知识可参加《 枚举类型》 实例1:
class Task implements Delayed
{
String name;
long submitTime;
TaskString taskName,long delayTime)
{
name=taskName;
/*conver the time from MILLISECONDS to NANOSECONDS
* *
*/
submitTime=TimeUnit.NANOSECONDS.convertsubmitTime, TimeUnit.MILLISECONDS) + System.nanoTime);
}
public long getDelayTimeUnit unit)
{
System.out.println”get delay”);
return unit.convertsubmitTime – System.nanoTime), TimeUnit.NANOSECONDS);
}
public int compareToDelayed o)
{
System.out.println”compareTo”);
Task that = Task) o;
return submitTime > that.submitTime?1:submitTime < that.submitTime ? -1 : 0);
}
void doTask)
{
System.out.println”do task:”+name);
}
}