我從遺留代碼繼承。我面臨的問題是在Android中異步出現多個網絡調用(但可以是我的問題的任何系統)。所有的調用完成後,我需要加載另一個屏幕(在Android中的活動)。現在,發生的事情是無法知道哪個調用先完成,並且有很多布爾等,用於跟蹤所有作業何時完成。我需要您推薦我可以使用的模式或工具,以便在所有作業完成後才轉到下一個屏幕。該團隊沒有時間學習RxJava。這在RxJava之前是如何完成的?如何在多個網絡呼叫全部完成後觸發事件
所以要清楚我現在有3個網絡調用是同時發起的,但是是異步的,我只想在下一個窗口完成時才進入下一個窗口。請記住,它們都是在同一時間開始的,但可以在不同的時間完成,因爲它們是異步的。
我需要類似於promise,但我認爲Java沒有。我可以使用future來做到這一點嗎?怎麼樣?
更新:問題是我在做這個異步工作的android活動。活動在主線程中面向用戶。
對於那些建議countdownlatch我有一個反對它的想法。在android中,開發人員無法讓主線程阻塞。 ANR錯誤將會出現。所以可以說我做了兩個網絡調用線程,然後從主線程調用_latch.await();
。現在android會繼續等待這兩個調用完成。長時間不允許在android主線程中阻塞。
你不想使用信號量或倒數計時器的原因? https://developer.android.com/reference/java/util/concurrent/package-summary.html –