我是線程新手,我經歷了堆棧溢出的許多帖子,併爲我的問題找到了很多解決方案,但我不確定哪一個最適合哪種情況。如何在所有線程完成時運行代碼
第一件事,第一,我的問題是,我想更新一個JSON文件 當所有線程都在一個特定的路徑與位圖代這樣做 我可以得到所有這些圖像和更新JSON文件。所以在 簡單的話我想運行一些代碼,當所有的線程完成它 執行和主要要求是,我不希望我的主要被阻止,因爲這一點。
我有什麼發現
- 線程。加入
- excutorServive
- Android的優先級jobQueue (link)
- 互斥的線程池(也讓我知道如果任何其它有)
我很困惑哪一個是解決的最好辦法我的問題。如果有任何 android專家有可以總結,以下兩個 scenerio什麼是Android中最好的可用。
- 等待,當所有線程完成
- 不要等待,得到通知時,所有完成
您是否可以在使用中更具描述性。我不知道有多少線程正在運行。它也是一個變量。正如我不知道;不知道會有多少位圖生成。第二件事,我希望它從我的應用程序完全獨立的模塊。如何才能知道線程已完成?因爲我需要在一個線程中有一個while循環(糾正我,如果我錯了) – RATHI
@RATHI擴展KgaboL的答案,同一時刻你開始一個線程,你可以增加一個計數器(設置在靜態類,如果你想)。當一個線程結束時,減少該計數器,並檢查它是否等於零。當它爲零時,這意味着所有的線程都消失了。您仍然需要考慮在不再需要一組線程時發生的情況(例如,延遲加載一些不再顯示在屏幕上的圖像),例如確保最終作業不會執行,除非您再次創建線程, 或類似的東西。 – Korcholis
@Korcholis謝謝你的回答,這種方法可以使用什麼,我正在考慮和一個線程池執行器一起使用。實際上我對此感到困惑,不想在未來的晚些時候再次跳到另一種方法。 – RATHI