启动线程用run还是start
时间: 2024-03-28 18:37:20 浏览: 11
启动线程应该使用 `start` 方法而不是 `run` 方法。`start` 方法会在新线程中执行 `run` 方法,而 `run` 方法只会在当前线程中执行,这样会阻塞当前线程,无法实现多线程的并发执行。因此,正确的做法是在需要启动新线程的地方调用 `start` 方法,这样会在新线程中执行对应的代码。
相关问题
启动一个线程是用 run(还是 start()方法?
启动一个线程应该使用 start() 方法,而不是 run() 方法。当你调用 start() 方法时,它会在一个新的线程中执行 run() 方法。如果你直接调用 run() 方法,它将在当前线程中执行,而不会创建新的线程。
例如,假设你有一个类实现了 Runnable 接口,它的 run() 方法包含一些需要在新线程中执行的代码。你可以使用以下代码启动新线程:
```java
Runnable myRunnable = new MyRunnable(); // MyRunnable 实现了 Runnable 接口
Thread myThread = new Thread(myRunnable);
myThread.start(); // 启动新线程
```
在上面的代码中,我们首先创建了一个 Runnable 对象(MyRunnable),然后将其传递给 Thread 构造函数。最后,我们调用 start() 方法启动新线程。
请注意,如果你直接调用 run() 方法,它将在当前线程中执行,而不会创建新的线程。因此,如果你想在新线程中执行代码,你必须使用 start() 方法来启动新线程。
线程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 ]