我是新來的Java和多線程的概念。這裏是我的實驗代碼:多線程輸出預計不到
public class Multithread implements Runnable {
Thread t;
public Multithread(int prior, String name) {
this.t = new Thread(this, name);
this.t.setPriority(prior);
this.t.start();
}
public void run() {
for (int i = 1; i <= 5; i++) {
if (this.t.getName().equals("thread1")) {
System.out.println("First Child Thread Loop No " + i);
}
else {
System.out.println("Second Child Thread Loop No " + i);
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
System.out.println(e);
}
}
}
public static void main(String[] args) {
new Multithread(10, "thread1");
new Multithread(7, "thread2");
}
}
輸出是:
First Child Thread Loop No 1
Second Child Thread Loop No 1
First Child Thread Loop No 2
Second Child Thread Loop No 2
Second Child Thread Loop No 3
First Child Thread Loop No 3
Second Child Thread Loop No 4
First Child Thread Loop No 4
Second Child Thread Loop No 5
First Child Thread Loop No 5
嗯,我預計會有這樣簡單:
First Child Thread Loop No 1
Second Child Thread Loop No 1
First Child Thread Loop No 2
Second Child Thread Loop No 2
First Child Thread Loop No 3
Second Child Thread Loop No 3
First Child Thread Loop No 4
Second Child Thread Loop No 4
First Child Thread Loop No 5
Second Child Thread Loop No 5
我期望能獲得前總是執行第一線第二個線程。 請解釋我的輸出。提前致謝。
我永遠不會理解這些問題。如果你想要一個特定的執行順序,爲什麼你使用線程? – EJP
@EJP我認爲這種程序只是一個不懂線程並想學習的人編寫的測試。 –
@Patricia雅正好。我只是想學習與多個線程 –