JAVA中thread的run和start方法有什么区别?

如上面所说

1. 在Java中,通过调用Thread类的`start()`方法来启动一个线程。这个方法不仅调用了线程的`run()`方法,而且还会执行一系列的初始化操作,确保线程可以正确地进入运行状态。如果直接调用`run()`方法,它仅仅会作为普通的方法被顺序执行,不会启动一个新的线程。
2. `run()`方法是线程的入口点,它包含了线程应该执行的任务。当线程启动后,`run()`方法中的代码会被执行,一旦`run()`方法执行完毕,线程就会终止。在调用`start()`方法后,Java虚拟机会创建一个新的线程并执行`run()`方法中的代码。
3. 举例来说,以下代码说明了`start()`和`run()`的区别:
```java
public class TestThread1 {
public static void main(String[] args) {
Runner1 r = new Runner1();
// r.run(); // 这是方法调用,而不是开启一个线程
Thread t = new Thread(r); // 调用了Thread(Runnable target)方法,并将Runner1对象作为目标
t.start(); // 启动线程
for (int i = 0; i < 100; i++) {
System.out.println("进入Main Thread运行状态");
System.out.println(i);
}
}
}
class Runner1 implements Runnable { // 实现了这个接口,JDK就知道这个类是一个线程
public void run() {
for (int i = 0; i < 100; i++) {
System.out.println("进入Runner1运行状态");
System.out.println(i);
}
}
}
```
在这个例子中,`t.start()`是启动新线程的正确方式,它会创建一个Runner1线程并执行其中的任务。如果使用`r.run()`,它只会按照程序顺序执行,而不会并行地启动一个新的线程。
温馨提示:答案为网友推荐,仅供参考
JAVA中thread的run和start方法有什么区别?
1. 在Java中,通过调用Thread类的`start()`方法来启动一个线程。这个方法不仅调用了线程的`run()`方法,而且还会执行一系列的初始化操作,确保线程可以正确地进入运行状态。如果直接调用`run()`方法,它仅仅会作为普通的方法被顺序执行,不会启动一个新的线程。2. `run()`方法是线程的入口点,它包含了

java中Thread线程中的 start和run方法的区别
run方法是线程执行的入口,而start方法则是启动线程的指令。使用start方法调用run方法,可以使程序具备多线程并行处理的能力。这样可以提高程序的执行效率,特别是在处理耗时操作时,可以有效避免主线程的阻塞。为了更好地理解这两者的区别,可以将start方法比作是启动车辆的钥匙,而run方法则是车辆的引擎。只有...

Java Thread的start和run方法的区别
通过start()启动线程,异步执行:输出结果: pingpong 通过run()启动线程,同步执行:输出结果:pongping 通过以上两个程序实例,很容易区分start()方法和run()方法的区别,即通过start()启动线程实现异步操作,而直接调用run()方法只是执行该方法内的代码,并没有启动新的线程。线程状态说明,从初始状态、...

Java中Thread类的start和run的区别
在Java中,Thread类是处理多线程的核心。启动一个线程,我们需要调用start方法。start方法的作用是启动一个线程,它会调用线程对象的run方法。也就是说,start方法启动线程,而run方法则包含了线程执行的具体任务。要理解start和run的区别,可以想象成start是启动按钮,而run是按钮被按下后执行的动作。当线...

java线程中run 和start有什么区别
在Java线程中,start()和run()方法有着本质的区别。使用start()方法时,会立即返回,并启动一个新线程来执行run()方法。这意味着run()方法是在新线程中独立运行的。然而,直接调用run()方法则不会创建新的线程,而是直接在当前线程中执行run()方法,因此执行完毕后才会返回。基于这一点,使用start()...

Java多线程中start和run的区别
在Java多线程编程中,start和run是两个关键方法,但它们的功能和作用却截然不同。start方法用于启动线程,当调用start方法时,Java虚拟机会创建一个新的线程,并为该线程分配CPU时间片,进而执行该线程所关联类的run方法。这意味着run方法的执行是在一个新的线程中进行的。相比之下,run方法则是一个普通...

run() 与start()的区别
简而言之,start()方法是启动线程的方法,它会创建一个新的线程,并让该线程执行run()方法中的代码;而run()方法则是线程具体执行的任务,你需要通过继承Thread类并重写run()方法来定义线程的行为。使用start()方法来启动线程,可以让Java虚拟机自动管理线程的生命周期,而通过重写run()方法,则可以定义...

Java线程中run和start方法的区别?
两种方法的区别\\x0d\\x0a 1) start:\\x0d\\x0a用\\x0d\\x0astart方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。通过调用Thread类的\\x0d\\x0astart()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,一旦得到cpu时间...

java中thread的start()和run()有何区别?
1、start()方法来启动线程,真正实现了多线程运行,这时无需等待。run方法体代码执行完毕而直接继续执行下面的代码;通过调用Thread类的start()方法来启动一个线程,这时此线程是处于就绪状态,并没有运行。通过Thread类调用方法run()来完成其运行操作的,这里方法run()称为线程体,它包含了要执行的这个...

启动一个线程是用run()还是start()? 它们分别表示什么意思?
start()方法的作用是让Java虚拟机(JVM)创建一个新线程,并启动这个新线程来执行该线程对象的run()方法。这意味着当调用start()方法时,JVM会为这个线程分配资源,并开始执行run()方法中的代码。这与直接调用run()方法有着本质的区别。直接调用run()方法仅执行了run()方法中的代码,线程并未真正进入...

相似回答
大家正在搜