`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()`方法。