Rus*_*iye 1 java multithreading
通常主线程首先启动,然后用户线程启动,但在下面的代码我无法弄清楚主线程将睡眠还是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);
}
}
Run Code Online (Sandbox Code Playgroud)
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");
}
}
Run Code Online (Sandbox Code Playgroud)
请回复
Thread.sleep(long millis)是一种static方法,它允许当前线程(即调用此方法的线程)休眠指定的毫秒数.
在您给出的示例中,主线程将休眠5秒 - 而不是t1引用的线程.
代码具有误导性,因为您static在实例上调用方法.