如何在此代码中跟踪多个异步任务

时间:2019-06-13 22:35:00

标签: java android

我正在为用户创建一个选项来暂停或计划任务。根据程序,我将其限制为2个暂停,可以并行或串行发生。我认为最简单的方法是设置两个不同的Runnable。但是,如果任务1 <任务2,并且在任务1结束之前启动了任务2,则任务1将关闭任务2。

出于争论的目的,任务1是5秒的延迟,任务2是10秒的延迟。任务2在任务1中触发1秒。任务1完成后,似乎任务2已完成。

threadNumber是我在调用任务以跟踪结果时设置的一个整数。

他们不是独立行动,而是被混在一起

我将Runnable分为两个不同的元素,由开关/案例触发。但是,这并没有像我想的那样隔离动作。

公共类MultiThreadingActivity扩展了活动{

    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);
        }
    };

}

我希望任务是异步的,同时的和独立的。

1 个答案:

答案 0 :(得分:0)

如果您想同时做某事,则AsyncTask不是正确的答案。 AsyncTask的工作方式是按照它们在同一线程中出现的顺序运行所有任务。因此,任务1会阻止其他任何任务,甚至从开始到完成。这也意味着任务2的确切时间是不确定的。如果您同时需要多个任务,或者需要严格控制时间,请改用Thread。