:
Thread aThread = new Thread();
aThread.run();
将会发生什么?
答案 0 :(得分:10)
它将在当前主题中运行。你会不以这种方式开始新线程。
但是在你的例子中这并不重要,因为你给了新的Thread没有代码可以运行。
答案 1 :(得分:3)
运行main()
代码的线程是当前线程。创建Thread
对象并调用其中一个方法(start()
除外)就像调用类Integer
或String
的方法一样 - 它不会创建新的实际线程。
在您的代码示例中,只有在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,它将被执行并在方法完成后返回给调用者 - 就像每个正常的方法调用一样。