我正在创建一个简单的网络蜘蛛。它所做的只是接受一个URL,下载HTML并提取剩余的URL。然后它重复每个新URL的过程。我也确保我不会访问同一个URL两次,并限制了并发下载的数量。检测线程树完成时
在每一个唯一的URL已经耗尽(可以运行几天,几周或直到我死了和离开后)之后,我想要执行一个操作,比如更新UI或者简单地退出应用程序。
问题是,我不知道如何检测最后一个线程何时完成运行。
此线程问题是否已解决?我在看问题错了吗?
一个想法是保持每个线程活着,直到其所有的孩子完成(加入)。问题是线程的数量呈指数增长。对于这样一个长期运行的过程,它会很快耗尽操作系统资源。
我从其他人那里得到了类似的答案。在开始一个子线程之前简单地递增,然后递减。当计数变为零时,让该子线程启动“我已完成”的工作。谢谢! –