睡眠暂停执行

Thread.sleep使当前线程在指定的时间段内暂停执行。这是使处理器时间可用于应用程序的其他线程或计算机系统上可能正在运行的其他应用程序的有效方法。如下例中所示,sleep方法也可用于调步,并像稍后部分中的SimpleThreads示例那样,await 另一个线程承担被认为具有时间要求的任务。

提供了sleep的两个重载版本:一个将休眠时间指定为毫秒,另一个将休眠时间指定为纳秒。但是,由于这些睡眠时间受到底层 os 提供的功能的限制,因此不能保证精确的睡眠时间。而且,睡眠期可以通过中断来终止,这将在下一部分中介绍。无论如何,您不能假定调用sleep将在指定的时间段内精确地挂起线程。

SleepMessages示例使用sleep每隔四秒打印一次消息:

public class SleepMessages {
    public static void main(String args[])
        throws InterruptedException {
        String importantInfo[] = {
            "Mares eat oats",
            "Does eat oats",
            "Little lambs eat ivy",
            "A kid will eat ivy too"
        };

        for (int i = 0;
             i < importantInfo.length;
             i++) {
            //Pause for 4 seconds
            Thread.sleep(4000);
            //Print a message
            System.out.println(importantInfo[i]);
        }
    }
}

注意main声明为throws InterruptedException。这是sleep处于活动状态时,另一个线程中断当前线程时sleep引发的异常。由于此应用程序尚未定义另一个引起中断的线程,因此不必费心捕捉InterruptedException