Java 中的 Thread.sleep() - Java 线程睡眠
介绍
JavaThread.sleep()
方法可用于暂停当前线程的执行一段指定的时间(以毫秒为单位)。毫秒的参数值不能为负数。否则,它会抛出IllegalArgumentException
。
sleep(long millis, int nanos)
是另一种方法,可用于暂停当前线程的执行指定的毫秒数和纳秒数。允许的纳秒值介于0
和之间999999
。
在本文中,您将了解 Java 的Thread.sleep()
。
Thread.sleep 的工作原理
Thread.sleep()
与线程调度程序交互,使当前线程在指定的时间内处于等待状态。等待时间结束后,线程状态将更改为可运行状态并等待 CPU 进一步执行。当前线程休眠的实际时间取决于操作系统中的线程调度程序。
Java Thread.sleep 重点
- 它总是暂停当前线程的执行。
- 线程在被唤醒并开始执行之前实际休眠的时间取决于系统定时器和调度程序。对于安静的系统,实际休眠时间接近指定的休眠时间,但对于繁忙的系统,休眠时间会稍长一些。
Thread.sleep()
不会丢失任何监视器或锁定其已获取的当前线程。- 任何其他线程都可以中断当前处于睡眠状态的线程,并且
InterruptedException
会抛出此类异常。
Java Thread.sleep 示例
下面是一个示例程序,Thread.sleep()
用于暂停主线程执行 2 秒(2000 毫秒):
线程睡眠.java
package com.journaldev.threads;
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));
}
}
首先,此代码以毫秒为单位存储当前系统时间。然后休眠 2000 毫秒。最后,此代码打印出新的当前系统时间减去之前的当前系统时间:
OutputSleep time in ms = 2005
请注意,这个差异并不是精确的 2000 毫秒。这是由Thread.sleep()
线程调度程序的工作方式和操作系统特定实现决定的。
结论
在本文中,您了解了 Java 的Thread.sleep()
。
通过更多Java 教程继续学习。