gpt4 book ai didi

java - 线程在执行期间被扰乱

转载 作者:行者123 更新时间:2023-11-29 06:39:31 24 4
gpt4 key购买 nike

在下面的代码段中,我创建了 3 个线程并给它们一个编号以跟踪哪个线程是哪个线程。当我执行该程序时,除了线程是随机排序之外,输出与预期一致。我本来希望它们以与创建和启动 (1-2-3) 相同的顺序出现,但我每次都会得到一个困惑的结果。

这是为什么?

一个 PrintTask 对象创建一个随机的 sleep 时间并在它完成 hibernate 时打印一条消息。代码很简单,所以我不会发布它。当我使用 ExecutorService 而不是单独的线程对象时,也会发生同样的事情。

public static void main(String[] args) {
Thread thread1 = new Thread(new PrintTask("Thread 1"));
Thread thread2 = new Thread(new PrintTask("Thread 2"));
Thread thread3 = new Thread(new PrintTask("Thread 3"));

System.err.println("Starting threads");

thread1.start();
thread2.start();
thread3.start();

System.err.println("Threads started, main ends\n");
}

输出:

Thread 2 going to sleep for 4907

Thread 1 going to sleep for 4779

Thread 3 going to sleep for 537

Thread 3 done sleeping

Thread 1 done sleeping

Thread 2 done sleeping

最佳答案

I would've expected them to show up in the same order as they're created & started (1-2-3)

不,不能保证线程执行的顺序。

关于java - 线程在执行期间被扰乱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14201319/

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