下面的代码输出pingpong,我不太明白为什么这个 System.out.print 会在 t.start之前输出我的想法是 应该会随机输出 pongping和pingpong,应该没有顺序的才对呀。。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 回答
慕田峪7331174
TA贡献1828条经验 获得超13个赞
两个线程不在同一起跑线上,主线程都已经跑到System.out.print("ping");这一行了,t线程才刚刚开始,t线程总要经过一些准备吧,在多核CPU上,主线程大概率会先获得System.out对象,然后先输出ping。得想办法让两个线程站在统一起跑线上。
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添加回答
举报
0/150
提交
取消
