2
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]);
        }
    }
}

在这段代码中没有创建线程,但确实存在Thread.sleep(4000)。那么这个线程代表什么?主程序本身?换句话说,Thread 是否隐含了程序本身?

4

5 回答 5

5

是的,Thread.sleep()作用于当前线程,在您的情况下,它只是运行程序必须始终存在的一个线程。

于 2013-04-29T20:28:31.377 回答
2

线程是否隐含程序本身?

不。引用Thread.sleep()javadocs

使当前执行的线程休眠(暂时停止执行)指定的毫秒数,取决于系统计时器和调度程序的精度和准确性。

因此Thread.sleep()休眠当前运行的线程,该线程发生在运行该main(...)方法的“主”线程上。

那么这个线程代表什么?主程序本身?

No. Thread是类的名称。这取决于static您调用什么方法来了解它的作用。然而,对于大多数每线程方法, ( sleep(...),yield()等)Thread.method()适用于当前正在运行的线程或Thread.currentThread().

于 2013-04-29T20:37:18.530 回答
1

在每个 Java 程序上,总是至少存在一个 Thread。第一个线程称为“主线程”。

Thread.sleep(4000);

此时调用当前线程,强制等待4000毫秒。

您尚未创建任何线程,但 Java 虚拟机已创建“主”线程,负责运行您的程序 :)

于 2013-04-29T20:37:56.957 回答
1

在 Java 中,sleep是类Thread的静态成员函数,它使调用它的线程进入睡眠状态。

于 2013-04-29T20:28:05.317 回答
0

静态调用sleep导致当前正在执行的线程休眠,在这种情况下只是暂停输出(而不是屈服于另一个线程或其他)

于 2013-04-29T20:27:52.843 回答