下面的代码输出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();//等一下线程tSystem.out.print("ping");}//输出pingpongpingpongpingpongpongpingpingpong
添加回答
举报
0/150
提交
取消