[英]How to synchronize two async task?
我的問題是我有兩個異步任務,它們在做一種矩陣乘法。 因此,兩個任務都訪問相同的矩陣。 一個在上部,另一個在下部。 對於內存節省問題,我使用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();
}
我嘗試使用通知並等待,但這似乎無法解決問題。 我不知道可以用來解決此問題的任何其他方法。 在兩個任務同時運行時,實際上是否可以等待兩個任務?
我相信以下問題的答案可以為您提供有關如何管理多個異步任務的抽象信息。
和github示例:
https://github.com/vitkhudenko/test_asynctask (提供給vitkhudenko)
如果這是Java-7,則正在尋找Phaser 。 您需要的方法是到達和等待 。
在Java的早期版本(5.1或更高版本)中,您可能會使用Semaphore 。
或者,您可以切換到使用線程池,例如ExecutorService和Futures 。 這將具有更大的可擴展性,並更好地利用多核處理器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.