码上敲享录 > java面试题及答案大全 > 线程的run()和start()有什么区别?

线程的run()和start()有什么区别?

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

`run()`和`start()`是与线程相关的两个方法,它们之间有以下区别:


1. `run()`方法:

`run()`方法是`java.lang.Runnable`接口定义的方法,用于线程的主体代码逻辑。当直接调用`run()`方法时,会在当前线程下执行该方法,而不会创建新的线程。这种方式下,`run()`方法会按照顺序依次执行,即以普通的方法调用的方式进行。


2. `start()`方法:

`start()`方法是`java.lang.Thread`类定义的方法,用于启动线程。当调用`start()`方法时,会创建一个新的线程,并调用该线程的`run()`方法。通过`start()`方法启动线程后,线程会以独立的方式并行运行。


具体区别如下:


- `run()`方法在当前线程中执行,而`start()`方法创建一个新的线程来执行。

- 直接调用`run()`方法会在当前线程中执行,不会启动新的线程,因此不会实现多线程的并行性。

- 调用`start()`方法会创建一个新的线程,并且该线程会异步执行`run()`方法,从而实现了并发执行。


因此,如果希望实现多线程并发执行,应该使用`start()`方法来启动线程;而如果只是想普通地调用某个方法,不涉及多线程,可以直接调用`run()`方法。


0

有建议,请留言!

  • *您的姓名:

  • *所在城市:

  • *您的联系电话:

    *您的QQ:

  • 咨询问题:

  • 提 交