当前位置: 首页 > 知识库问答 >
问题:

Java函数不以异步方式执行

白浩荡
2023-03-14

我有个问题。我有4个类:classAclassBclassC,所有函数都称为run()。现在我正在尝试使用异步,所以我想要的是以下内容:

    null

null

public class classA {

    public void run() {

        System.out.println("CLASS A");

        new classB().run();

    }
    
}

null

public class classB {
    
    public void run() {

        System.out.println("CLASS B");

    }

}

null

public class classC {

    public void run() {

        System.out.println("CLASS C");

    }
    
}

null

public class MainClass {

    public static void main(String[] args) {

        CompletableFuture<Void> testRun = CompletableFuture.runAsync(() -> {
            new classA().run();
        });

        CompletableFuture<Void> test2Run = CompletableFuture.completedFuture(testRun).thenRunAsync(() -> {
            new classC().run();
        });

    }

}

null

null

共有1个答案

范安歌
2023-03-14

您的代码有两个问题:

  1. 您不是在等待任务的完成。它们与main()方法异步运行,但可能无法在main()方法之前及时完成。这意味着您可能看不到任务的输出,这取决于它们是否足够快(参见“竞争条件”)。使用get()join()等待完成。
  2. completablefuture.completedfuture()不用于“等待”其他任务完成。您正在构建两个并行运行的任务,这可能导致类似“a,C,b”的输出。如果要“等待”完成,可以使用CompletableFuture.AllOf()CompletableFuture.AnyOf()之类的内容,具体取决于您的需要。
 类似资料:
  • 问题内容: 在过去的几个小时中,我一直在努力解决这个问题,但无法解决。我想我仍然必须习惯于函数式编程风格;) 我写了一个递归函数,它遍历目录结构并对某些文件进行处理。此功能使用异步IO方法。现在,我要在完成整个遍历后执行一些操作。 如何确保在执行完所有调用但仍使用异步IO功能后执行此操作? 问题答案: 查找“ 步骤”模块。它可以链接异步函数调用,并将结果从一个传递到另一个。

  • 我目前正在努力创建EventhubTrig在Java函数应用程序,它侦听IotHub的默认endpoint。目前按照教程,我没有看到任何用于Java函数应用程序的异步实现的示例代码,而建议对C#函数应用程序使用async/wait。 我是否应该考虑/是否可以在Java中为Function Apps添加异步实现?是否有任何示例代码可以参考?我是否应该考虑在函数应用中添加并行编程/多线程逻辑? htt

  • 我正试图将图像上传到firebase存储,但调用该函数时,未执行wait以获取url。我错过了什么? 看看这个其他主题,我发现问题可能是“然后”,但我如何设置代码以等待url? 异步/等待/然后飞镖/颤振 谢谢

  • 我在一个函数中有这样的代码块: 它获取一些数据,然后对数据运行验证()。 但是,我对数据的验证实际上也是异步的,因为它是根据一个json模式来验证数据的,而json模式位于一个独立的json文件中,所以它必须首先读取该文件。 我使用了一个承诺来读取文件内容,然后进行验证: 如何编辑此问题中的顶部代码块以解释if语句()中的异步函数?

  • 延迟异步函数的执行。 延迟执行 async 函数的一部分,通过把它放到 sleep 状态,返回一个 Promise 。 const sleep = ms => new Promise(resolve => setTimeout(resolve, ms)); async function sleepyWork() { console.log("I'm going to sleep for 1

  • 本文向大家介绍不同js异步函数同步的实现方法,包括了不同js异步函数同步的实现方法的使用技巧和注意事项,需要的朋友参考一下 不同函数达到同步的函数模拟 funcList是函数执行函数的队列,其中回调函数中flag=true是同步标记量 以上这篇不同js异步函数同步的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。