下面的代碼輸出pingpong,我不太明白為什么這個(gè) System.out.print 會(huì)在 t.start之前輸出我的想法是 應(yīng)該會(huì)隨機(jī)輸出 pongping和pingpong,應(yīng)該沒有順序的才對(duì)呀。。public class Test2 { public static void main(String args[]) {
Thread t = new Thread() { public void run() {
pong();
}
};
t.start();
System.out.print("ping");
} static void pong() {
System.out.print("pong");
}
}
2 回答

ibeautiful
TA貢獻(xiàn)1993條經(jīng)驗(yàn) 獲得超6個(gè)贊
兩個(gè)線程不在同一起跑線上,主線程都已經(jīng)跑到System.out.print("ping");
這一行了,t線程才剛剛開始,t線程總要經(jīng)過一些準(zhǔn)備吧,在多核CPU上,主線程大概率會(huì)先獲得System.out
對(duì)象,然后先輸出ping
。得想辦法讓兩個(gè)線程站在統(tǒng)一起跑線上。
public static void main(String args[]) throws InterruptedException { CountDownLatch latch = new CountDownLatch(1); Thread t = new Thread() { public void run() { latch.countDown(); System.out.print("pong"); } }; t.start(); latch.await();//等一下線程t System.out.print("ping"); }//輸出pingpong pingpong pingpong pongping pingpong
添加回答
舉報(bào)
0/150
提交
取消