对于下述代码,d2在另一个线程里运行完download2函数后才能在主函数线程调用其自身的join(),方法,这样保证主函数线程可以在download2()和download1()两个函数都运行完后调用process。
- 谁调用了join()函数?d2这个线程对象调用了join()函数,因此必须等待d2的下载任务结束了,d2.join()函数才能得到返回。
- d2在哪个线程环境下调用了join()函数?d2是在主线程的环境下调用了join()函数,因此主线程要等待d2的线程工作做完,否则主线程将一直处于block状态;这里不要搞混的是d2真正做的任务(下载)是在另一个线程做的,但是d2调用join()函数的动作是在主线程环境下做的。
转载见下链接。