Thread Sleep
Thread.sleep() 可以用于暂停当前线程的执行指定时间
具有一种重载方法 sleep(long millis, int nanos)
该方法可允许暂停时间在纳秒期间,范围为 0~999999
简单程序示例
package coreofjava.javathread.threadsleep;
public class ThreadSleep {
public static void main(String[] args) throws InterruptedException {
long start = System.currentTimeMillis();
Thread.sleep(2000);
System.out.println("Sleep time in ms = " + (System.currentTimeMillis() - start));
}
}
Java Thread Sleep 重点
- 总是暂停当前线程执行
- 在唤醒并开始执行前线程休眠实际时间取决于系统计时器和调度程序。对于安静的系统,睡眠实际时间接近指定的睡眠时间,对于繁忙的系统,可能稍多。
- 线程休眠不会丢失的当前线程获取的监视器或锁定
- 任何其他线程都可以在睡眠中中断当前线程,这种情况下抛出 InterruptedException
线程睡眠工作方式
Thread.sleep() 与线程调度程序交互,使当前线程在指定的时间段内处于等待状态。等待时间结束后,线程状态将改为可运行状态,待CPU进一步执行。当前线程休眠实际时间取决于作为操作系统一部分的线程调度程序。