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

时间:2009-08-12 05:12:01

标签: java multithreading

如果我写这个,请在​​主方法中

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

将会发生什么?

5 个答案:

答案 0 :(得分:10)

它将在当前主题中运行。你会不以这种方式开始新线程

但是在你的例子中这并不重要,因为你给了新的Thread没有代码可以运行。

答案 1 :(得分:3)

运行main()代码的线程是当前线程。创建Thread对象并调用其中一个方法(start()除外)就像调用类IntegerString的方法一样 - 它不会创建新的实际线程。

在您的代码示例中,只有在run()方法运行完毕后,main方法才会继续执行。这意味着如果run()方法具有无限循环(假设它正在等待传入请求),则main()方法将永远不会继续运行,即使调用后有更多行代码也是如此run()

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

答案 2 :(得分:3)

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

答案 3 :(得分:1)

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

答案 4 :(得分:0)

如果在Thread类上调用start-method,start-method将在一段时间后返回,但在并发中将运行run-method的内容。如果直接调用run-method,它将被执行并在方法完成后返回给调用者 - 就像每个正常的方法调用一样。