如何等待多个asynctask完成他们的工作?

时间:2015-08-02 02:39:54

标签: android json rss android-volley xmlreader

我正在使用ThreadPoolExeecutor使3个Asynctask同时工作。每个线程都从一个Arraylist中的RSS源收集数据,然后我想将这三个Arraylist合并为一个到主线程中更新的View。问题是我需要在所有3个线程完成工作后执行此操作,如何监听这些线程?

3 个答案:

答案 0 :(得分:2)

使用CountDownLatch。这个java类为您提供方便的同步计数器。使用计数3初始化一个对象,调用await(),然后在每个任务完成时调用countDown()。一旦它为0,锁将被释放,你可以执行任务。

答案 1 :(得分:1)

创建一个成员变量并初始化为0,在每个onPostExecute上递增它。同时检查所有onPostExecute中的值是否为3,如果是3调用方法来组合arraylist。

答案 2 :(得分:0)

您可以调用async task get函数等待它完成,或者您可以在其onPostExecute函数中保存一个计数器,其中每个任务都会增加。一旦计数器值将是异步任务的数量,执行您的代码。