线程run start 方法区别
时间: 2024-05-17 19:13:57 浏览: 111
在Java中,线程的启动有两种方式:通过实现Runnable接口并将其传递给Thread对象,或者通过继承Thread类并重写run()方法。在这两种方式中,start()方法的作用是启动线程,但是它们的实现略有不同。
对于实现Runnable接口的线程,启动线程需要先创建一个Thread对象,并将实现了Runnable接口的对象传递给它。然后,调用Thread对象的start()方法来启动线程。在调用start()方法后,JVM会自动调用实现了Runnable接口的对象的run()方法。
对于继承Thread类的线程,启动线程需要直接创建一个Thread对象,并重写run()方法。然后,调用Thread对象的start()方法来启动线程。在调用start()方法后,JVM会自动调用该Thread对象的run()方法。
总的来说,无论是通过实现Runnable接口还是通过继承Thread类实现线程,启动线程的方式都是调用Thread对象的start()方法。但是,实现方式略有不同,因为实现Runnable接口的对象只是一个任务,它需要一个Thread对象来包装它并将其视为一个线程。而继承Thread类的对象本身就是一个线程,不需要额外的包装。
相关问题
线程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()方法有着明显的区别。run()方法只是类的一个普通方法,如果直接调用run()方法,程序中只有主线程这一个线程,程序执行路径还是只有一条,需要顺序执行,等待run()方法执行完毕后才能继续执行下面的代码。\[2\]而start()方法是通过调用线程类的start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有真正开始运行。一旦得到CPU时间片,就开始执行run()方法。但是需要注意的是,此时无需等待run()方法执行完毕,就可以继续执行下面的代码。所以,通过调用start()方法来启动线程才能真正实现多线程的目的。\[1\]\[3\]
#### 引用[.reference_title]
- *1* *2* *3* [线程中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]
[ .reference_list ]
阅读全文