2011-12-25 50 views
0

当我们调用start()时,一个新的执行线程开始于专用调用堆栈。在Java中的新线程上调用堆栈信息

我想知道哪一个将成为调用堆栈中的第一个方法:start()或run()。

有人提到,一旦run()完成后,Thread就被认为是死的。

回答

2

start()根本不在新线程上调用;它只能在原始线程上运行。

+0

感谢您的回复。一旦start()被调用,线程就可以被视为活动。这似乎有点矛盾..这是否意味着'活'的状态并不意味着一个新的堆栈? – Firefox 2011-12-26 00:01:49

+0

它的确如此,但'start()'方法不会出现在新堆栈上。 – SLaks 2011-12-26 00:02:31

+1

@Firefox就这么想:当一个方法被调用时,它被压入线程的调用堆栈。由于你只在start方法中创建了新线程,因此它不可能出现在新创建的线程堆栈上(好吧,这是骗人的,当然可以,但它没有多大意义) – Voo 2011-12-26 01:06:21

3

start是调用主线程的方法。这意味着它位于主线程的堆栈中。然后在start内新建一个线程实际上被触发,并且run方法是新线程堆栈中的第一个方法。

+0

感谢Tudor的澄清 – Firefox 2011-12-26 01:23:20