gpt4 book ai didi

java - 这个java线程程序的执行结果如何解读解释

转载 作者:行者123 更新时间:2023-11-30 06:41:15 25 4
gpt4 key购买 nike

我是线程的新手。我读了一篇来自 https://www.math.uni-hamburg.de/doc/java/tutorial/essential/threads/definition.html 的文章

“线程是程序中的单个顺序控制流。”它对我来说仍然是无形的,如果有人能再举一个例子并解释更多,那将非常有帮助。

然后我用下面的代码检查了一些例子。

class SimpleThread extends Thread {
public SimpleThread(String str) {
super(str);
}
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println(i + " " + getName());
try {

# sleep((int)(Math.random() * 1000));
/* I have changed Math.random() to 0.5 so that all will sleep with same amount of time */
sleep((int)(0.5 * 1000));
} catch (InterruptedException e) {}
}
System.out.println("DONE! " + getName());
}
}

class ThreeThreadsTest {
public static void main (String[] args) {
new SimpleThread("Jamaica").start();
new SimpleThread("Fiji").start();
new SimpleThread("Bora Bora").start();
}
}

在ThreeThreadsT​​est的main函数中,三个线程一个一个创建,结果应该遵循这样一个模式:

0 牙买加
0 斐济
0 波拉波拉岛
1 牙买加
1 斐济
1 波拉波拉岛
2 牙买加
2 斐济
2 波拉波拉岛 ...

但是结果是这样的:
0 牙买加
0 波拉波拉岛
0 斐济
1 牙买加
1 波拉波拉岛
1 斐济
2 牙买加
2 斐济
2 波拉波拉岛
3 牙买加
3 斐济
3 波拉波拉岛
4 波拉波拉岛
4 牙买加
4 斐济
5 波拉波拉岛
5 牙买加
5 斐济
6 波拉波拉岛
6 牙买加
6 斐济
7 波拉波拉岛
7 斐济
7 牙买加
8 波拉波拉岛
8 牙买加
8 斐济
9 波拉波拉岛
9 斐济
9 牙买加
完毕!斐济
完毕!波拉波拉岛
完毕!牙买加

谁能解释为什么会这样?

最佳答案

Thread.start() 将线程放入准备执行的线程队列中。然后操作系统选择任何准备好的线程并执行它。无法保证下一个将选择哪个线程,因此执行顺序相当随机。

关于java - 这个java线程程序的执行结果如何解读解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55983981/

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