这是我的程序。线程输出不按预期执行
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)(1000));
} catch (InterruptedException e) {}
}
System.out.println("DONE! " + getName());
}
}
class TwoThreadsTest {
public static void main (String[] args) {
new SimpleThread("Jamaica").start();
new SimpleThread("Fiji").start();
}
}
我得到输出
0 Jamaica
0 Fiji
1 Fiji
1 Jamaica
2 Jamaica
2 Fiji
3 Fiji
3 Jamaica
4 Fiji
4 Jamaica
5 Fiji
5 Jamaica
6 Fiji
6 Jamaica
7 Fiji
7 Jamaica
8 Jamaica
8 Fiji
9 Fiji
9 Jamaica
DONE! Fiji
DONE! Jamaica
我怀疑.. 1)线程牙买加被称为第一 要求它睡1000毫秒。 然后线程斐济被称为 它应该打印并要求进入睡眠1000毫秒。 但我得到如上所示的输出。 为什么它不交替和印刷线jamica和斐济
阅读关于线程优先级 – Vasco
没有guaranteee一个线程会后正好1000毫秒醒来取决于系统资源是否可用,可能需要更长的时间以及调度程序如何处理它。 – MartinS
'System.out.println()'每次调用它需要不同的时间。 – Guy