三个时间
1.currentThreadTimeMillis
Returns milliseconds running in the current thread.
2.uptimeMillis
Returns milliseconds since boot, not counting time spent in deep sleep.
3.elapsedRealtime
Returns milliseconds since boot, including time spent in sleep.
SystemClock.sleep()与Thread.sleep()
先看看SystemClock.sleep()的源码:
/**
* Waits a given number of milliseconds (of uptimeMillis) before returning.
* Similar to {@link java.lang.Thread#sleep(long)}, but does not throw
* {@link InterruptedException}; {@link Thread#interrupt()} events are
* deferred until the next interruptible operation. Does not return until
* at least the specified number of milliseconds has elapsed.
*
* @param ms to sleep before returning, in milliseconds of uptime.
*/
public static void sleep(long ms)
{
long start = uptimeMillis();
long duration = ms;
boolean interrupted = false;
do {
try {
Thread.sleep(duration);
}
catch (InterruptedException e) {
interrupted = true;
}
duration = start + ms - uptimeMillis();
} while (duration > 0);
if (interrupted) {
// Important: we don't want to quietly eat an interrupt() event,
// so we make sure to re-interrupt the thread so that the next
// call to Thread.sleep() or Object.wait() will be interrupted.
Thread.currentThread().interrupt();
}
}
本文详细介绍了三种系统时间的概念:currentThreadTimeMillis、uptimeMillis 和 elapsedRealtime,并对比了SystemClock.sleep与Thread.sleep的区别及其实现原理。SystemClock.sleep不抛出InterruptedException,而是延迟中断事件直到下一个可中断操作。

1226

被折叠的 条评论
为什么被折叠?



