Java 我自己很难弄清楚当前线程在这段代码中是如何工作的

Java 我自己很难弄清楚当前线程在这段代码中是如何工作的,java,multithreading,Java,Multithreading,它在调用run()时打印“main”。为什么它不是“MyThread”它不是MyThread类,因为run()方法只是调用,它仍然在主线程的上下文中运行 线程本身在调用start()之前不会变成新线程,而调用run()之后会发生这种情况。它不是MyThread类,因为run()方法只是调用,它仍然在主线程的上下文中运行 在调用start()之前,线程本身不会变成新线程,这发生在调用run()之后,因为run()只是一个方法调用,它仍然在主线程的上下文中运行。在调用start()之前,线程本身不会

它在调用run()时打印“main”。为什么它不是“MyThread”

它不是
MyThread
类,因为
run()
方法只是调用,它仍然在主线程的上下文中运行


线程本身在调用
start()
之前不会变成新线程,而调用
run()

之后会发生这种情况。它不是
MyThread
类,因为
run()
方法只是调用,它仍然在主线程的上下文中运行


在调用
start()
之前,线程本身不会变成新线程,这发生在调用
run()
之后,因为
run()
只是一个方法调用,它仍然在主线程的上下文中运行。在调用
start()
之前,线程本身不会成为新线程,这发生在调用
run()
之后。但是,我交换了方法调用语句,输出保持不变,start()打印“main”。怎么做?因为
run()
仍然只是一个方法调用。它仍然发生在调用线程的上下文中。主要是调用
run()
,而不是其他线程。任何其他方法调用都会发生同样的情况:它们总是在调用方线程的上下文中调用。因为
run()
只是一个方法调用,所以它仍然在主线程的上下文中运行。在调用
start()
之前,线程本身不会成为新线程,这发生在调用
run()
之后。但是,我交换了方法调用语句,输出保持不变,start()打印“main”。怎么做?因为
run()
仍然只是一个方法调用。它仍然发生在调用线程的上下文中。主要是调用
run()
,而不是其他线程。任何其他方法调用都会发生同样的情况:它们总是在调用方线程的上下文中被调用。
class MyThread extends Thread{ //
    public void run(){
        Thread t1=Thread.currentThread();
        System.out.println(t1.getName());
    }
 }
 class Demo{
    public static void main(String args[]){
        Thread t1=new MyThread();
        t1.setName("MyThread");
        t1.run();
        t1.start();
    }
 }