Java 此代码中的哪个线程处于休眠状态?主线程还是t1线程?

Java 此代码中的哪个线程处于休眠状态?主线程还是t1线程?,java,multithreading,Java,Multithreading,通常主线程先启动,然后用户线程启动,但在下面的代码中,我无法确定主线程将休眠还是t1线程 MessageGenerator.java MainClass.java 请回复是一个静态方法,允许当前线程(即此方法正在从睡眠中调用的线程)在指定的毫秒数内运行 在您给出的示例中,主线程将休眠5秒,而不是t1所指的线程 该代码具有误导性,因为您正在对实例调用静态方法。是一个静态方法,允许当前线程(即此方法正在从睡眠中调用的线程)在指定的毫秒数内运行 在您给出的示例中,主线程将休眠5秒,而不是t1所指的线程

通常主线程先启动,然后用户线程启动,但在下面的代码中,我无法确定主线程将休眠还是t1线程

MessageGenerator.java

MainClass.java

请回复

是一个静态方法,允许当前线程(即此方法正在从睡眠中调用的线程)在指定的毫秒数内运行

在您给出的示例中,主线程将休眠5秒,而不是t1所指的线程

该代码具有误导性,因为您正在对实例调用静态方法。

是一个静态方法,允许当前线程(即此方法正在从睡眠中调用的线程)在指定的毫秒数内运行

在您给出的示例中,主线程将休眠5秒,而不是t1所指的线程


该代码具有误导性,因为您正在实例上调用静态方法。

Sleep是Thread类的静态方法,应称为Thread.sleeplong毫秒


根据系统计时器和调度程序的精度和准确性,使当前正在执行的线程休眠并暂时停止执行指定的毫秒数。线程不会失去任何监视器的所有权。

睡眠是线程类的静态方法,应称为thread.sleeplong毫秒


根据系统计时器和调度程序的精度和准确性,使当前正在执行的线程休眠并暂时停止执行指定的毫秒数。线程不会失去任何监视器的所有权。

主线程将休眠..5000毫秒。
sleep是一个静态方法,它总是引用当前正在执行的线程。因此它调用主线程,使主线程睡眠。

主线程将睡眠..5000毫秒。
sleep是一个静态方法,它总是引用当前正在执行的线程。因此它调用主线程,这样主线程就会休眠。

t1甚至还没有启动,它怎么会休眠?t1甚至还没有启动,它怎么会休眠?只是想知道。。我们可以指示t1以某种方式从主线程睡眠吗?在MessageGenerator中创建一个包含thread.sleep的方法,或者只看下面的例子。。我们可以指示t1从主线程睡眠吗?在MessageGenerator中创建一个包含thread.sleep的方法,或者查看
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);
    }
}
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");
    }
}