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是否隐含了程序本身?
答案 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)
答案 3 :(得分:1)
在每个Java程序中,至少始终存在一个Thread。第一个线程称为'main'。
Thread.sleep(4000);
此时调用当前线程,并强制等待4000毫秒。
您尚未创建任何线程,但Java虚拟机已创建了“主”线程,负责运行您的程序:)
答案 4 :(得分:0)
对sleep
的静态调用导致当前正在执行的线程休眠,在这种情况下只是暂停输出(而不是屈服于另一个线程或其他任何线程)