gpt4 book ai didi

java - 请解释 Thread run() 和 start() 方法的输出

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:16:49 25 4
gpt4 key购买 nike

请解释以下代码的输出:

如果我调用 th1.run(),输出是:

EXTENDS RUN>>
RUNNABLE RUN>>

如果我调用 th1.start(),输出是:

RUNNABLE RUN>>
EXTENDS RUN>>

为什么会出现这种不一致?请解释。

class ThreadExample extends Thread{
public void run() {
System.out.println("EXTENDS RUN>>");
}
}

class ThreadExampleRunnable implements Runnable {
public void run() {
System.out.println("RUNNABLE RUN>>");
}
}

class ThreadExampleMain{
public static void main(String[] args) {
ThreadExample th1 = new ThreadExample();
//th1.start();
th1.run();

ThreadExampleRunnable th2 = new ThreadExampleRunnable();
th2.run();
}
}

最佳答案

Thread.start() 方法启动一个新线程,这个线程的入口点是run() 方法。如果直接调用 run() ,它将在同一个线程中执行。鉴于调用 Thread.start() 将启动一个新的执行线程,run() 方法可能会在主线程的其余部分之后(如您的示例)被调用方法执行。

改变你的主要方法调用th1.start()并重复运行,你会看到有时它输出:

EXTENDS RUN>>
RUNNABLE RUN >>

有时它会输出:

RUNNABLE RUN >>
EXTENDS RUN>>

取决于 java 选择如何安排您的 2 个线程。

查看 java tutorial对此。

关于java - 请解释 Thread run() 和 start() 方法的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3027495/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com