16.4.3 线程睡眠sleep
16.4.3 线程睡眠sleep
sleep方法
如果需要让当前正在执行的线程暂停一段时间,并进入阻塞状态,则可以通过调用Thread
类的静态sleep
方法来实现。
sleep
方法有如下两种重载形式
方法 | 描述 |
---|---|
static void sleep(long millis) |
让当前正在执行的线程暂停millis 毫秒,并进入阻塞状态,该方法受到系统计时器和线程调度器的精度与准确度的影响。 |
static void sleep(long millis, int nanos) |
让当前正在执行的线程暂停 millis 毫秒加 nanos 毫微秒,并进入阻塞状态,该方法受到系统计时器和线程调度器的精度与准确度的影响。一般很少调用这种形式的sleep 方法。 |
当一个线程调用sleep
方法进入阻塞状态后,在其睡眠时间段内,该线程不会获得执行的机会,即使系统中没有其他可执行的线程,处于sleep()
中的线程也不会执行,因此sleep
方法常用来暂停程序的执行。
程序示例 线程sleep
下面程序调用sleep
方法来暂停主线程的执行,因为该程序只有一个主线程,当主线程进入睡眠后,系统没有可执行的线程,所以可以看到程序在sleep
方法处暂停。
1 | import java.util.*; |
运行效果
1 | 当前时间: Wed Jul 17 13:21:24 CST 2019 |
运行上面程序,看到程序依次输出10条字符串,输出2条字符串之间的时间间隔为1秒。