一般来说主线程先启动然后用户线程启动,但是在下面的代码中我无法弄清楚主线程是睡眠还是t1线程。
MessageGenerator.java
public class MessageGenerator implements Runnable {
String msg;
public MessageGenerator(String msg) {
super();
this.msg = msg;
}
@Override
public void run() {
System.out.println(Thread.currentThread().getName()+" Running");
System.out.println(msg);
}
}
MainClass.java
public class MainClass {
public static void main(String[] args) throws InterruptedException {
Thread t1=new Thread(new MessageGenerator("Hello"));
t1.sleep(5000); //Confused here
t1.start();
Thread t2=new Thread(new MessageGenerator("Hi"));
t2.start();
System.out.println(Thread.currentThread().getName()+" Running");
}
}
请回复
答案 0 :(得分:9)
Thread.sleep(long millis)
是一种@PostMapping("/top")
public void addTop(@RequestBody Node node){
nodeRepository.saveTop(node.getId(),node.getName());
}
方法,它允许当前线程(即调用此方法的线程)休眠指定的毫秒数。
在您给出的示例中,主线程将休眠5秒 - 不 static
引用的线程。
代码具有误导性,因为您在实例上调用t1
方法。
答案 1 :(得分:0)
Sleep是Thread类的静态方法,它应该被称为Thread.sleep(long millisec)
使当前正在执行的线程休眠(暂时停止执行)指定的毫秒数,具体取决于系统定时器和调度程序的精度和准确性。该线程不会失去任何监视器的所有权。
答案 2 :(得分:0)
主线程将睡眠...为5000毫秒。 sleep()是一个静态方法,它总是引用当前正在执行的thread.so它调用主线程,所以主线程将睡眠。