猿问

跪求!线程笔试题:不明白为什么会输出pingpong而不是pongping

下面的代码输出pingpong,我不太明白为什么这个System.out.print会在t.start之前输出我的想法是应该会随机输出pongping和pingpong,应该没有顺序的才对呀。。
publicclassTest2{
publicstaticvoidmain(Stringargs[]){
Threadt=newThread(){
publicvoidrun(){
pong();
}
};
t.start();
System.out.print("ping");
}
staticvoidpong(){
System.out.print("pong");
}
}
哈士奇WWW
浏览 706回答 2
2回答

ibeautiful

两个线程不在同一起跑线上,主线程都已经跑到System.out.print("ping");这一行了,t线程才刚刚开始,t线程总要经过一些准备吧,在多核CPU上,主线程大概率会先获得System.out对象,然后先输出ping。得想办法让两个线程站在统一起跑线上。publicstaticvoidmain(Stringargs[])throwsInterruptedException{CountDownLatchlatch=newCountDownLatch(1);Threadt=newThread(){publicvoidrun(){latch.countDown();System.out.print("pong");}};t.start();latch.await();//等一下线程tSystem.out.print("ping");}//输出pingpongpingpongpingpongpongpingpingpong
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答