gpt4 book ai didi

java - 调用一堆 AsyncTask,有没有办法知道它们何时都完成显示消息?

转载 作者:行者123 更新时间:2023-11-30 04:10:33 25 4
gpt4 key购买 nike

所以我正在做的是,我有一个循环,我在我的循环中调用了一个 AsyncTask,所以可能有很多这样的循环。根据我的理解,循环完成后我不能只显示一条消息表明一切都已完成,因为该消息将在 AsyncTasks 完成之前出现,因为那是异步线程处理的要点。

如果我只有一个 AsyncTask,那就很容易了,我会把我的代码放在 onPostExecute() 中显示一条消息,但现在我有很多。

那么有没有办法知道所有 AsyckTast 线程何时全部完成,以便我可以显示我的消息?

感谢您的回答,您可能已经猜到,我对 Java 有点陌生。

最佳答案

尝试使用 static Integer,它会随着每个 AsyncTask 的创建而递增,并在 onPostExecute() 中递减。当它达到 0 时,您的所有任务都将完成。

例如:创建任务时:

 synchronized(staticInt) {
//create AsyncTask
++staticInt;
}

当它完成时:

 protected void onPostExecute(Object result) {
synchronized(staticInt) {
--staticInt;
if (staticInt == 0) {
//show message
}
}
}

正如@James 所建议的,您还可以使用它来控制在特定时间执行的 AsyncTask 的最大数量:

 while (staticInt >= MAX_NUMBER_OF_THREADS) {
//wait
}

synchronized(staticInt) {
//create AsyncTask
++staticInt;
}

它可以通过等待通知方法进行改进。

关于java - 调用一堆 AsyncTask,有没有办法知道它们何时都完成显示消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10928620/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com