本Java教程适用于JDK 8。本页面中描述的示例和实践不利用后续版本中引入的改进,并可能使用不再可用的技术。
有关Java SE 9及其后续版本中更新的语言特性的摘要,请参阅Java语言更改。
有关所有JDK版本的新功能、增强功能和已删除或已弃用选项的信息,请参阅JDK发布说明。
Thread.sleep
会使当前线程暂停执行一段指定的时间。这是一种有效的方式,可以为应用程序的其他线程或在计算机系统上运行的其他应用程序提供处理器时间。sleep
方法还可以用于节奏控制,如下面的示例所示,并且可以等待具有已知时间要求的其他线程,就像后面一节中的SimpleThreads
示例一样。
sleep
提供了两个重载的版本:一个指定以毫秒为单位的睡眠时间,另一个指定以纳秒为单位的睡眠时间。然而,这些睡眠时间不能保证精确,因为它们受底层操作系统提供的设施的限制。此外,睡眠时间可以被中断,后面我们将会看到。无论如何,您不能假设调用sleep
将精确地将线程挂起指定的时间段。
示例使用SleepMessages
sleep
以四秒的间隔打印消息:
public class SleepMessages { public static void main(String args[]) throws InterruptedException { String importantInfo[] = { "马吃燕麦", "兔吃燕麦", "小羊吃常春藤", "小孩也会吃常春藤" }; for (int i = 0; i < importantInfo.length; i++) { //暂停4秒 Thread.sleep(4000); //打印消息 System.out.println(importantInfo[i]); } } }
注意,main
声明了它会throws InterruptedException
。这是sleep
在另一个线程在sleep
处于活动状态时中断当前线程时抛出的异常。由于此应用程序没有定义另一个线程来引发中断,因此它不需要捕获InterruptedException
异常。