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

时间:2025-02-17 07:30:09

在Java中,线程的 run() 和 start() 方法有以下几个区别:

1. 定义位置不同

run()方法是Thread类中的一个普通方法,它是线程中实际运行的代码,线程的代码逻辑主要就是在run()方法中实现的。

start()方法是Thread类中的一个启动方法,它会启动一个新的线程,并在新的线程中调用run()方法。

2. 执行方式不同

直接调用run()方法,会像普通方法一样在当前线程中顺序执行run()方法的内容,这并不会启动一个新的线程。

调用start()方法会创建一个新的线程,并在新的线程中并行执行run()方法的内容。

3. 线程状态不同

当我们调用start()方法启动一个新线程时,该线程会进入就绪状态,等待JVM调度它和其他线程的执行顺序。而当我们直接调用run()方法时,则会在当前线程中执行,不会产生新的线程。

因此,在Java多线程编程中,我们应该始终使用start()方法来启动新线程,而不是直接调用run()方法。