我正在为用户创建一个用于暂停或安排任务的选项。基于程序,我将其限制为2个停顿,这可以并行或串行发生。我认为最简单的方法是设置两个不同的Runnables。然而,如果任务1 <任务2,并且任务2在任务1结束之前被激发,则任务1关闭任务2。
为了便于论证,任务1是5秒延迟,任务2是10秒延迟。任务2在任务1中触发1秒。当任务1完成时,似乎Task2已经完成。
threadNumber是我在调用任务以跟踪结果时设置的一个整数。
他们不是独立行动,而是被混为一谈。
我将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);
}
};
}
我希望任务是异步的,同步的和独立的。
发布于 2019-06-13 23:10:39
如果你想同时做一些事情,AsyncTask不是正确的答案。AsyncTask的工作方式是按照任务在同一线程中的顺序运行所有任务。因此,任务1会阻止任何其他任务开始,直到它完成。这也意味着任务2的确切时间是不确定的。如果您需要同时执行多个任务,或者需要严格控制时间,请改用线程。
https://stackoverflow.com/questions/56589344
复制相似问题