android TimeUnit表示給定單元顆粒度的時間段

來源:互聯網
上載者:User

android TimeUnit表示給定單元顆粒度的時間段
public enum TimeUnit
extends Enum
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
枚舉常量摘要
MICROSECONDS 微秒 一百萬分之一秒(就是毫秒/1000)
MILLISECONDS 毫秒 千分之一秒
NANOSECONDS 毫微秒 十億分之一秒(就是微秒/1000)
SECONDS 秒
MINUTES 分鐘
HOURS 小時
DAYS 天
主要介面:
long convert(long duration, TimeUnit unit)
將給定單元的時間段轉換到此單元。
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 toMicros(long duration)
等效於 MICROSECONDS.convert(duration, this)。
long toMillis(long duration)
等效於 MILLISECONDS.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()
按照聲明該枚舉類型的常量的順序,返回包含這些常量的數組。
注意1:它的常量MICROSECONDS,MILLISECONDS,NANOSECONDS,SECONDS都是TimeUnit類型
注意2:convert(long 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;
Task(String taskName,long delayTime)
{
name=taskName;
/*conver the time from MILLISECONDS to NANOSECONDS
* *
*/
submitTime=TimeUnit.NANOSECONDS.convert(submitTime, TimeUnit.MILLISECONDS) + System.nanoTime();
}
public long getDelay(TimeUnit unit)
{
System.out.println("get delay");
return unit.convert(submitTime - System.nanoTime(), TimeUnit.NANOSECONDS);
}
public int compareTo(Delayed 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);
}
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.