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