这个Java代码中的`Thread`是什么?

时间:2013-04-29 20:25:30

标签: java multithreading concurrency

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是否隐含了程序本身?

5 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:2)

  

Thread是否隐含了程序本身?

没有。引用Thread.sleep() javadocs

  

导致当前正在执行的线程进入休眠状态(暂时停止   执行)指定的毫秒数,受制于   系统定时器和调度程序的精度和准确性。

所以Thread.sleep()会睡觉当前正在运行的线程,该线程发生在&#34; main&#34;运行main(...)方法的线程。

  

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

没有。 Thread是该类的名称。这取决于你所调用的static方法。但是,对于大多数每线程方法,(sleep(...)yield()等)Thread.method()应用于当前正在运行的线程或Thread.currentThread()

答案 2 :(得分:1)

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

答案 3 :(得分:1)

在每个Java程序中,至少始终存在一个Thread。第一个线程称为'main'。

Thread.sleep(4000);

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

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

答案 4 :(得分:0)

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