gpt4 book ai didi

java - 是否有可能在调用旁边的语句执行后打印方法调用输出?

转载 作者:行者123 更新时间:2023-11-30 05:50:39 25 4
gpt4 key购买 nike

在下面的代码中,预测输出可能是什么?

public class Threads2 implements Runnable {
public void run()
{
System.out.println("run.");
throw new RuntimeException("Problem");
}

public static void main(String[] args)
{
Thread t = new Thread(new Threads2());
t.start();
System.out.println("End of method.");
}
}

作为答案给出的可能结果是:

End of method.
run.
java.lang.RuntimeException: Problem

run.
java.lang.RuntimeException: Problem
End of method.

据我所知,只有第2个答案是可能的,请帮助我理解。

最佳答案

这两个答案都是可能的。线程调度程序决定何时执行并发线程的指令。启动线程和主线程“并行”运行,唯一的保证是每个线程的指令按顺序执行。但是两个操作序列之间可能存在任何交错。

顺便说一句,您还可以拥有以下内容。

run
end of method
java.lang.RuntimeException: Problem

打个比方,想象一下你有一场跨栏比赛,你告诉每个赛跑者开始比赛,一次一个。你知道哪个赛跑者会在每个障碍中获得第一名吗?不,你不知道。这取决于每个运行者的速度。如果第一个开始的跑者很慢,最后一个跑者可能比他先跑到第一个栏。这与线程相同。调度程序将每个正在运行的线程分配给一个核心,以他想要的任何顺序,并且在它决定的任何时间。您唯一的保证是每个线程都会执行一段时间。

关于java - 是否有可能在调用旁边的语句执行后打印方法调用输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13776970/

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