关于示例程序的join()不会影响线程执行顺序
Clins28 opened this issue · 4 comments
Clins28 commented
join()的意思不是主线程执行到此处等待调用join()的线程执行结束再继续执行吗
laixintao commented
哪一段?
Clins28 commented
第二章第四节中的讨论部分,我自己写了个类似的,好像结束顺序与是否调用join()无关
laixintao commented
嗯 我还没去检查,不过结束顺序确实和是否调用无关的,线程的结束顺序只能和线程执行的速度有关啊,线程执行完了就结束了。join() 只是能保证线程如果还没执行玩的话,就阻塞在这里,直到次线程已经结束,才继续向下执行代码,我是这么理解的。
laixintao commented
t1.start()
t2.start()
t3.start()
t1.join()
t2.join()
t3.join()
这段确实是有问题的,我改一下。正确的解释应该是,t1 开始执行, t2 开始执行, t3 开始执行,确保t1 结束,确保t2结束,确保t3结束。
那么确保t1结束的时候t3有可能已经结束了,结束顺序依然是不确定的。