为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

哈士奇WWW 2019-08-21 12:30:58
下面的代码输出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");}}
查看完整描述

2 回答

?
ibeautiful

TA贡献1993条经验 获得超5个赞

两个线程不在同一起跑线上,主线程都已经跑到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();//等一下线程t
System.out.print("ping");
}
//输出
pingpong
pingpong
pingpong
pongping
pingpong
                            
查看完整回答
反对 回复 2019-08-21
  • 2 回答
  • 0 关注
  • 705 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信