Java 如果我自己调用run()方法会发生什么?

Java 如果我自己调用run()方法会发生什么?,java,multithreading,Java,Multithreading,在main方法中,如果我这样写: Thread aThread = new Thread(); aThread.run(); 会发生什么?它将在当前线程中运行。您将不会以这种方式启动新线程 但在您的示例中,这并不重要,因为您没有给新线程任何代码来运行。它将在当前的线程中运行。您将不会以这种方式启动新线程 但在您的示例中,这并不重要,因为您没有给新线程任何代码来运行。运行main()代码的线程就是当前线程。创建线程对象并调用其中一个方法(而不是开始())就像调用类整数或字符串的方法一样-它不会创

在main方法中,如果我这样写:

Thread aThread = new Thread();
aThread.run();

会发生什么?

它将在当前线程中运行。您将不会以这种方式启动新线程


但在您的示例中,这并不重要,因为您没有给新线程任何代码来运行。

它将在当前的线程中运行。您将不会以这种方式启动新线程


但在您的示例中,这并不重要,因为您没有给新线程任何代码来运行。

运行
main()
代码的线程就是当前线程。创建
线程
对象并调用其中一个方法(而不是
开始()
)就像调用类
整数
字符串
的方法一样-它不会创建新的实际线程

在您的代码示例中,只有当
run()
方法完成运行后,main方法的执行才会继续。这意味着如果
run()
方法有一个无止境的循环(假设它正在等待传入的请求),那么
main()
方法将永远不会继续运行,即使调用
run()
后有更多的代码行


调用
aThread.start()
将创建一个新的实际线程(由对象
aThread
表示),使新线程调用
run()
方法,并将原始线程的执行返回到
main()
中的下一行。这意味着新线程可以永远循环运行,但它不会阻止
main()
代码创建更多线程或执行其他任务。

运行
main()
代码的线程是当前线程。创建
线程
对象并调用其中一个方法(而不是
开始()
)就像调用类
整数
字符串
的方法一样-它不会创建新的实际线程

在您的代码示例中,只有当
run()
方法完成运行后,main方法的执行才会继续。这意味着如果
run()
方法有一个无止境的循环(假设它正在等待传入的请求),那么
main()
方法将永远不会继续运行,即使调用
run()
后有更多的代码行


调用
aThread.start()
将创建一个新的实际线程(由对象
aThread
表示),使新线程调用
run()
方法,并将原始线程的执行返回到
main()
中的下一行。这意味着新线程可以永远循环运行,但它不会阻止
main()
代码创建更多线程或执行其他任务。

它将像调用普通方法一样运行。因此,该方法将在调用该方法的同一线程中运行。

它将像调用普通方法一样运行。因此,该方法将在调用该方法的同一线程中运行。

如果在线程类上调用start方法,则start方法将在一段时间后返回,但同时将运行run方法的内容。如果您直接调用run方法,它将在方法完全完成后执行并返回给调用者,就像每个普通方法调用一样。

如果您在线程类上调用start方法,start方法将在一段时间后返回,但同时将运行run方法的内容。如果您直接调用run方法,它将在方法完全完成后执行并返回给调用者,就像每个普通方法调用一样。

它将在当前线程中运行,而不是在新线程中运行。因此,如果您自己调用run方法,它将毫无意义。因为它不会创建新线程。

它将在当前线程中运行,而不是在新线程中运行。因此,如果您自己调用run方法,它将毫无意义。因为它不会创建新线程