当我们调用start()时,一个新的执行线程开始于专用调用堆栈。在Java中的新线程上调用堆栈信息
我想知道哪一个将成为调用堆栈中的第一个方法:start()或run()。
有人提到,一旦run()完成后,Thread就被认为是死的。
当我们调用start()时,一个新的执行线程开始于专用调用堆栈。在Java中的新线程上调用堆栈信息
我想知道哪一个将成为调用堆栈中的第一个方法:start()或run()。
有人提到,一旦run()完成后,Thread就被认为是死的。
start()
根本不在新线程上调用;它只能在原始线程上运行。
start
是调用主线程的方法。这意味着它位于主线程的堆栈中。然后在start
内新建一个线程实际上被触发,并且run
方法是新线程堆栈中的第一个方法。
感谢Tudor的澄清 – Firefox 2011-12-26 01:23:20
感谢您的回复。一旦start()被调用,线程就可以被视为活动。这似乎有点矛盾..这是否意味着'活'的状态并不意味着一个新的堆栈? – Firefox 2011-12-26 00:01:49
它的确如此,但'start()'方法不会出现在新堆栈上。 – SLaks 2011-12-26 00:02:31
@Firefox就这么想:当一个方法被调用时,它被压入线程的调用堆栈。由于你只在start方法中创建了新线程,因此它不可能出现在新创建的线程堆栈上(好吧,这是骗人的,当然可以,但它没有多大意义) – Voo 2011-12-26 01:06:21