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

问题描述:

的主要方法,如果我这样写:如果我自己调用run()方法会发生什么?

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

会发生什么???

它会运行在当前线程。你会这样不会启动新线程

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

+0

什么是当前线程在这里? – Johanna 2009-08-12 05:31:33

+1

执行main()方法的主线程。 – 2009-08-12 05:40:43

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

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

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

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

如果您调用Thread类的start方法,start-method将在一段时间后返回,但在并发中将运行run-method的内容。如果您直接调用run-method,那么将在方法完成后执行并返回给调用方 - 与每个常规方法调用一样。

它会在当前线程中运行而不是在新线程所以如果你自己调用run方法,它是没有意义的。因为它不创建一个新的线程。