线程的 run() 和 start() 有以下区别:
- run() 该方法是线程的实际执行代码,当线程启动时,run() 该方法将被调用。还有 start() 启动线程的方法是创建一个新的线程并使其进入就绪状态。
- 直接调用 run() 该方法不会创建新的线程,而是在当前线程中执行 run() 方法代码。而调用 start() 该方法将创建新的线程并执行它 run() 方法。
- 一个线程只能启动一次。如果你试图再次启动同一个线程,它将被抛出 IllegalThreadStateException 异常。而 run() 该方法可多次调用。
- start() 该方法是异步的,即它会立即返回并开始执行新的线程。而 run() 该方法是同步的,即它将一直执行到该方法完成后才返回。
总之,start() 方法是启动线程的方法, run() 该方法是线程的实际执行代码。使用线程时,应调用 start() 启动线程而不是直接调用方法 run() 方法。