使用下面的代碼之前完成:的Java自動等待線程啓動一個新的
package myapp;
class Runner extends Thread {
public void run(){
for(int i = 0; i < 11; i++){
System.out.println("Hello " + i);
}
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public class Class1 {
public static void main(String[] args){
Runner t1 = new Runner();
t1.start();
Runner t2 = new Runner();
t2.start();
}
}
我得到以下輸出:
Hello 0
Hello 1
Hello 2
Hello 3
Hello 4
Hello 5
Hello 6
Hello 7
Hello 8
Hello 9
Hello 10
Hello 0
Hello 1
Hello 2
Hello 3
Hello 4
Hello 5
Hello 6
Hello 7
Hello 8
Hello 9
Hello 10
而我的輸出應該如下:
Hello 0
Hello 0
Hello 1
Hello 1
Hello 2
Hello 2
Hello 3
Hello 3
Hello 4
Hello 4
Hello 5
Hello 5
Hello 6
Hello 6
Hello 7
Hello 7
Hello 8
Hello 8
Hello 9
Hello 9
Hello 10
Hello 10
怎麼回事?我正在使用Eclipse標準版/ SDK版本:開普勒版本
版本ID:20130614-0229,jre7u25和jdk7u25。
你爲什麼認爲應該以第二種方式打印? – Ankit
因爲我沒有使用join(),並且它是來自示例的確切代碼。 – Adam
你的期望是不正確的,輸出的順序被認爲是**未定義的**,並且永遠不會被指定爲任何特定的順序。 –