我正在創建一個簡單的網絡蜘蛛。它所做的只是接受一個URL,下載HTML並提取剩餘的URL。然後它重複每個新URL的過程。我也確保我不會訪問同一個URL兩次,並限制了併發下載的數量。檢測線程樹完成時
在每一個唯一的URL已經耗盡(可以運行幾天,幾周或直到我死了和離開後)之後,我想要執行一個操作,比如更新UI或者簡單地退出應用程序。
問題是,我不知道如何檢測最後一個線程何時完成運行。
此線程問題是否已解決?我在看問題錯了嗎?
一個想法是保持每個線程活着,直到其所有的孩子完成(加入)。問題是線程的數量呈指數增長。對於這樣一個長期運行的過程,它會很快耗盡操作系統資源。
我從其他人那裏得到了類似的答案。在開始一個子線程之前簡單地遞增,然後遞減。當計數變爲零時,讓該子線程啓動「我已完成」的工作。謝謝! –