Java 如果我自己调用run()方法会发生什么?
在main方法中,如果我这样写:Java 如果我自己调用run()方法会发生什么?,java,multithreading,Java,Multithreading,在main方法中,如果我这样写: Thread aThread = new Thread(); aThread.run(); 会发生什么?它将在当前线程中运行。您将不会以这种方式启动新线程 但在您的示例中,这并不重要,因为您没有给新线程任何代码来运行。它将在当前的线程中运行。您将不会以这种方式启动新线程 但在您的示例中,这并不重要,因为您没有给新线程任何代码来运行。运行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方法,它将毫无意义。因为它不会创建新线程