码上敲享录 > java面试题及答案大全 > 为什么我们调用 start() 方法时会执行 run() 方法,为什么我们不能直接调用 run() 方法?

为什么我们调用 start() 方法时会执行 run() 方法,为什么我们不能直接调用 run() 方法?

上一章章节目录下一章 2023-07-11已有232人阅读 评论(0)

调用`start()`方法时会执行`run()`方法是因为这是`Thread`类中的设计。在`Thread`类中,`start()`方法用于创建并启动一个新的线程,并在新线程中执行`run()`方法。`start()`方法会完成一些底层的准备工作,包括线程的创建、调度等,然后在新线程中调用`run()`方法来执行线程的主体逻辑。


直接调用`run()`方法就像普通的方法调用一样,不会创建新的线程,而是在当前线程中按照顺序执行`run()`方法中的代码。这样做没有实现多线程的目的,并且会失去并发执行的能力。


为什么不能直接调用`run()`方法来实现多线程的并发运行呢?这是因为线程的创建和调度需要一些底层的工作,比如为线程分配资源、建立线程栈等。这些工作由`start()`方法完成,而直接调用`run()`方法会忽略这些准备工作,使得线程无法独立运行。


因此,为了实现多线程的并发执行,我们要使用`start()`方法来创建并启动新线程,然后由`start()`方法在新线程中调用`run()`方法来执行线程的主体逻辑。这样通过`start()`方法启动的线程才能够在独立的线程上并发执行,实现多线程的效果。


0

有建议,请留言!

  • *您的姓名:

  • *所在城市:

  • *您的联系电话:

    *您的QQ:

  • 咨询问题:

  • 提 交