文档

Java™教程
隐藏目录
使用Sleep暂停执行
指南: Java基础类
课程: 并发
章节: 线程对象

使用Sleep暂停执行

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异常。


上一页:定义和启动线程
下一页:中断