這是我的程序。線程輸出不按預期執行
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