Java异步调用方法等待返回

标签 java asynchronous android-asynctask

我知道可能有几种方法可以做到这一点,只是寻找最有效和最简洁的方法:

public Object giveMeNewObject() {
    final Object result = null;
    SomeApiClient.start(new Callback() { // starts an async process
        @Override
        public void onSuccess(Object somethingNew) {
            result = somethingNew; //ERROR; can't set cause final
        }
    });
    return result; //result is null, cause Async already finished
}

最佳答案

从您的代码中 - 这是动态修改的,因此纠正错误,一切都会按您的预期工作 - 调用者将等到第 3 方完成处理并获得该过程的结果:

public Object giveMeNewObject() {
    CountDownLatch latch=new CountDownLatch(1);
    Callback callback=new Callback() { 
      public sometype result=null;
        @Override
        public void onSuccess(Object somethingNew) {
            result = somethingNew; //ERROR; can't set cause final
            latch.countDown();
        }
    });
    SomeApiClient.start(callback);
    latch.await(sometimetowait);
    return callback.result;

}

关于Java异步调用方法等待返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37631422/

相关文章:

java - SQL Server 中的日期提取问题

c# - CPU 绑定(bind)任务的并行化继续与 IO 绑定(bind)

multithreading - 需要在 Tomcat 中解释 Workmanager 的示例代码

java - AsyncTask 工作时不显示进度条

java - 为什么 String 对象的 hashCode() 与自定义类对象的 hashCode() 不同?

java - 使用docx4j将图像插入到word文档中的特定位置

python - 一个非常简单的python异步应用程序

android - 如果声明为 Activity 的内部类或在单独的文件中,为什么 AsyncTask 的行为会有所不同?

Android:WAITING多个任务完成

java - 在 Java 中处理延迟事件的最佳方法是什么