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

标签 java android

我正在为用户创建一个暂停或安排任务的选项。根据程序,我将其限制为 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/

相关文章:

java - android 2.2 中的 jsoup 问题 - 仅在第二次尝试时连接?

java - 使用 Spannable 自定义大小的斜体字体

java - 当我使用继承实体的存储库时如何修复 "No property [repositoryMethod] found for type [entity]!"?

java - Android Studio 支持@IntRange 和@FloatRange 等注解,为什么没有@DoubleRange 注解

android - 谷歌地图 V2 错误

Android – 如何加载共享库?

java - 有人在没有 Ant 的情况下使用 webtest 吗?

java - 注入(inject) HttpServletRequest

java - Spring Security CSRF 与 enctype ="multipart/form-data"

javascript - WebView 在 Android 上无法正常工作