gpt4 book ai didi

java - 为什么线程执行在下一行执行之前完成

转载 作者:行者123 更新时间:2023-12-02 05:00:27 25 4
gpt4 key购买 nike

我正在一个新线程中编写一个简单的算法。我想知道为什么后面的代码要等到线程完成才能运行。这是一个执行相同操作的简单程序。

public static void main(String[] args) {
final String[] strings = new String[10];

new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < 10; i++) {
strings[i] = String.valueOf(i);
Thread.sleep(10000); // in real code this is wrapped in a simple try catch
}
}
}).run();

for (String string : strings) {
System.out.print(string);
}
}

线程 hibernate 了 10 秒,但最后一次迭代是在线程运行完成后执行的。
我什至可以延长 sleep 时间。但下一行(最后一次迭代)直到线程完成才执行。
这是为什么?

结果是0 1 2 3 4 5 6 7 8 9

最佳答案

您没有生成线程,因为您只是直接调用 run 方法。您需要改为调用 start 方法。

当您调用 start 方法时,JVM 会生成一个新线程并调用 Runnable 对象的 run 方法。直接调用 run 方法与调用任何其他普通方法类似,不需要新线程。

关于java - 为什么线程执行在下一行执行之前完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25094229/

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