gpt4 book ai didi

Java - Thread join() 和执行顺序 SCJP 问题?

转载 作者:行者123 更新时间:2023-11-29 07:19:04 25 4
gpt4 key购买 nike

我一直在为我的 O/SCJP 考试做一些练习。考虑以下代码:

public class Cruiser implements Runnable {
public static void main(String[] args) throws InterruptedException {
Thread a = new Thread(new Cruiser());
a.start();

System.out.print("Begin");
a.join();
System.out.print("End");
}

public void run() {
System.out.print("Run");
}
}

来源:http://scjptest.com/mock-test.xhtml

网站声明输出(他们的模拟问题的答案)将是 BeginRunEnd,并且当正常运行类(class)时,这正是输出。

但是,调试时输出为 RunBeginEnd

可以公平地说,在正常执行下,输出总是BeginRunEnd,还是会因其他因素(例如新线程类有多重/启动线程后需要多长时间才能加入它)?

您认为这是一道公平/准确的试题吗?

最佳答案

我认为 BeginRunEnd 比 RunBeginEnd 更有可能(我预计实际启动新线程的行为需要一段时间才能到达 run 方法,并且在大多数情况下第一个线程在它的时间片用完之前到达打印),但是在编程时假设这一点是完全不正确的

一旦 start 被调用,您就应该将这两个线程视为完全独立的,直到它们通过 join 调用再次显式绑定(bind)在一起。从逻辑上讲,新线程可以在主线程打印“开始”之前一直运行到完成。

在我看来这是个糟糕的问题。

关于Java - Thread join() 和执行顺序 SCJP 问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6874420/

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