如果我自己调用run()方法会发生什么?
答
它会运行在当前线程。你会这样不会启动新线程。
但是,在你的例子中,这并不重要,因为你给了新的线程没有代码来运行。
答
运行main()
代码的线程是当前线程。创建一个Thread
对象并调用其方法之一(start()
除外)就像调用类Integer
或String
的方法 - 它不会创建新的实际线程。
在您的代码示例中,只有当run()
方法完成运行时,主方法的执行才会继续。这意味着如果run()
方法有一个无限循环(假设它正在等待传入请求),那么即使在调用run()
之后有更多的代码行,main()
方法也不会继续运行。
调用aThread.start()
创建一个新的实际螺纹(由对象aThread
表示),使得新的线程调用run()
方法,并返回原来的线程的执行,以在main()
下一行。这意味着新线程可以永久运行,但不会阻止main()
代码创建更多线程或执行其他任务。
答
它会像你调用普通方法一样运行。因此该方法将在调用该方法的同一个线程中运行。
答
如果您调用Thread类的start方法,start-method将在一段时间后返回,但在并发中将运行run-method的内容。如果您直接调用run-method,那么将在方法完成后执行并返回给调用方 - 与每个常规方法调用一样。
答
它会在当前线程中运行而不是在新线程所以如果你自己调用run方法,它是没有意义的。因为它不创建一个新的线程。
什么是当前线程在这里? – Johanna 2009-08-12 05:31:33
执行main()方法的主线程。 – 2009-08-12 05:40:43