线程的 run()和 start()有什么区别
时间: 2023-04-18 13:03:06 浏览: 100
Java Thread 的 run() 与 start() 的区别.docx
线程的 run() 和 start() 有以下区别:
1. run() 方法是线程的实际执行代码,当线程被启动后,run() 方法会被调用。而 start() 方法是启动线程的方法,它会创建一个新的线程并使其进入就绪状态,等待 CPU 调度。
2. 直接调用 run() 方法并不会创建新的线程,而是在当前线程中执行 run() 方法的代码。而调用 start() 方法会创建新的线程,并在新的线程中执行 run() 方法的代码。
3. 一个线程只能被启动一次,如果尝试再次启动同一个线程,会抛出 IllegalThreadStateException 异常。而 run() 方法可以被多次调用。
4. start() 方法会异步地启动线程,即调用 start() 方法后,程序会继续往下执行,而不会等待线程执行完毕。而直接调用 run() 方法会同步地执行线程,即必须等待 run() 方法执行完毕后,程序才会继续往下执行。
总之,start() 方法是启动线程的标准方式,而 run() 方法是线程的实际执行代码。
阅读全文