线程的 run0和 start0有什么区别
时间: 2024-01-01 09:06:45 浏览: 133
在Java中,Thread类是用于创建线程的基本类。Thread类中有两个关键的方法,即run()和start()。
run()方法是线程的主体,它包含线程要执行的代码。在启动一个新线程时,需要重写run()方法并在其中定义线程的行为。
start()方法是用于启动线程的方法。当调用start()方法时,线程进入就绪状态并等待系统分配CPU资源。一旦线程被分配到CPU资源,run()方法就会被调用。
在Thread类的内部,start()方法实际上会调用一个名为start0()的本地方法。start0()方法是一个私有方法,它负责启动线程并调用run()方法。
因此,run0()方法实际上是start0()方法中调用的方法。在Java中,run0()方法是一个本地方法,它由JVM实现并负责执行线程的主体代码。因此,run0()方法和start0()方法的区别在于它们的作用和调用方式不同。
相关问题
线程run和start区别
线程的run()方法和start()方法有以下区别:\[1\]\[2\]\[3\]
- run()方法只是类的一个普通方法,如果直接调用run()方法,程序中只有主线程这一个线程,程序执行路径还是只有一条,需要等待run()方法执行完毕后才能继续执行下面的代码。
- start()方法是调用线程类的方法,通过调用start()方法才能真正实现多线程的目的。调用start()方法会启动一个新的线程,并使线程进入就绪状态,当分配到时间片后就可以开始运行了。start()方法会执行线程的准备工作,然后自动执行run()方法的内容,这是真正的多线程工作。
总结起来,直接调用run()方法只是在当前线程中执行run()方法的内容,而调用start()方法会启动一个新的线程,并在新的线程中执行run()方法的内容,实现了多线程的并发执行。
#### 引用[.reference_title]
- *1* *2* [线程中start方法和run方法的区别](https://blog.csdn.net/qq_40649503/article/details/124556991)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item]
- *3* [线程start() 和 run()的区别](https://blog.csdn.net/weixin_38568503/article/details/123357311)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
线程的 run()和 start()有什么区别
线程的 run() 和 start() 有以下区别:
1. run() 方法是线程的实际执行代码,当线程被启动后,run() 方法会被调用。而 start() 方法是启动线程的方法,它会创建一个新的线程并使其进入就绪状态,等待 CPU 调度。
2. 直接调用 run() 方法并不会创建新的线程,而是在当前线程中执行 run() 方法的代码。而调用 start() 方法会创建新的线程,并在新的线程中执行 run() 方法的代码。
3. 一个线程只能被启动一次,如果尝试再次启动同一个线程,会抛出 IllegalThreadStateException 异常。而 run() 方法可以被多次调用。
4. start() 方法会异步地启动线程,即调用 start() 方法后,程序会继续往下执行,而不会等待线程执行完毕。而直接调用 run() 方法会同步地执行线程,即必须等待 run() 方法执行完毕后,程序才会继续往下执行。
总之,start() 方法是启动线程的标准方式,而 run() 方法是线程的实际执行代码。
阅读全文