1

我的问题是我有两个异步任务,它们执行一种矩阵乘法。因此,这两个任务都在访问同一个矩阵。一个上半部分,另一个下半部分。对于内存节省问题,我使用 ArrayLists 并删除不再需要的条目。问题是在这两个任务中都有 for 循环运行,并且在这个循环结束时它应该等待另一个任务。但我不知道该怎么做。任务1:

protected Void doInBackground(Void... paramArrayOfParams) {
        android.os.Debug.waitForDebugger();
        for(j=1; j<(size+1); j++)
        {
            .... 
            try{ othertask.wait();
            }catch(InterruptedException e){}
            //wait for other task();
        }

任务 2:

protected Void doInBackground(Void... paramArrayOfParams) {
            android.os.Debug.waitForDebugger();
            for(j=1; j<(size+1); j++)
            {
                ....
                notifyAll();
                //notifythatroundisfinished();
            }

我尝试使用通知并等待,但这似乎并不能解决问题。我不知道可以用来解决问题的任何其他方法。实际上是否可以在两个都运行时等待另一个任务?

4

2 回答 2

1

我相信以下问题的答案可以为您提供有关如何管理多个 Async 任务的抽象信息。

如何在 Android 中高效管理多个异步任务

同时运行多个 AsyncTask —— 不可能吗?

和 github 示例:

https://github.com/vitkhudenko/test_asynctask(学分:vitkhudenko)

于 2013-09-20T10:07:31.050 回答
0

如果这是 Java-7,您正在寻找Phaser。您需要的方法是到达AndAwaitAdvance

在 Java 的早期版本(5.1 或更高版本)中,您可能会使用Semaphore

或者-您可以切换到使用线程池,例如ExecutorServiceFutures。这将更具可扩展性并更好地利用多核处理器。

于 2013-09-20T10:10:15.587 回答