我正在为用户创建一个暂停或安排任务的选项。根据程序,我将其限制为 2 次暂停,可以并行或串行发生。我认为最简单的方法是设置两个不同的 Runnable。但是,如果任务 1 < 任务 2,并且任务 2 在任务 1 结束之前启动,则任务 1 会关闭任务 2。
为了方便讨论,任务 1 延迟 5 秒,任务 2 延迟 10 秒。任务 2 在任务 1 中第 1 秒获得触发器。当任务 1 完成时,任务 2 似乎也已完成。
threadNumber 是我在调用任务时设置的一个 int,用于跟踪结果。
它们不是独立行动的,而是混合在一起的
我将 Runnables 分成两个不同的元素,由 switch/case 触发。然而,这并没有像我想象的那样孤立这些行动。
公共(public)类 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 的确切时间是不确定的。如果您需要同时执行多个任务,或者需要严格控制时间,请改用线程。
关于java - 如何在此代码中跟踪多个异步任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56589344/