簡體   English   中英

如何在此代碼中跟蹤多個異步任務

[英]How do I keep track of multiple Asynchronous Tasks in this code

我正在為用戶創建一個暫停或安排任務的選項。 基於該程序,我將其限制為2次暫停,這可以並行或串行發生。 我認為最簡單的方法是設置兩個不同的Runnables。 但是,如果在任務1結束之前發起任務1 <任務2和任務2,則任務1關閉任務2。

為了論證,任務1是5秒延遲,任務2是10秒延遲。 任務2在任務1中獲得1秒觸發。當任務1完成時,似乎Task2已完成。

threadNumber是我在調用任務時設置的int,用於跟蹤結果。

他們不是獨立行動,而是混合在一起

我將Runnables分成兩個不同的元素,由一個開關/案例觸發。 然而,這並沒有像我想象的那樣孤立行動。

公共類MultiThreadingActivity擴展Activity {

    public void StartPause1() {
        hand.postDelayed(run1, delay2);
    }

    Runnable run1 = new Runnable() {
        @Override
        public void run() {
            CallFinishedWithResult(threadNumber);
        }
    };
    public void StartPause2() {
        hand.postDelayed(run2, delay2);
    }
    Runnable run2 = new Runnable() {
        @Override
        public void run() {
            CallFinishedWithResult(threadNumber);
        }
    };

}

我希望任務是異步,同步和獨立的。

如果你想同時做事,AsyncTask不是正確的答案。 AsyncTask的工作原理是按照它們在同一個線程上的順序運行所有任務。 因此任務1阻止任何其他任務從開始直到完成。 這也意味着任務2的確切時間是不確定的。 如果您需要同時執行多個任務,或者需要嚴格控制時序,請改用Thread。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM