【问题标题】:ObjectStorageAsyc doesnt wait for completionObjectStorageAsyc 不等待完成
【发布时间】:2019-11-27 05:27:49
【问题描述】:

当我在 Helidon MP Main Program 中运行以下代码时,这适用于所有同时上传,但是 当我从 Test 运行代码时,我需要等待一些类似 threadSleep(time) 的东西一段时间,然后服务器停止所有文件才能上传,否则它只会上传几个文件。可以帮忙吗

ObjectStorageAsync client = new ObjectStorageAsyncClient(provider).getClient();
    client.putObject(putObjectRequest, putObjectHandler);
    PutObjectResponse response = putObjectHandler.waitForCompletion();

【问题讨论】:

    标签: java asynchronous helidon


    【解决方案1】:

    这个问题似乎只涉及 Oracle 对象存储 API,与 Helidon 无关。

    我还注意到putObject's 第二个参数是AsyncHandler,它似乎没有您上面引用的waitForCompletion() 方法。

    最后,我注意到putObject 方法返回一个您没有使用的Future(如果您提供AsyncHandler,从文档中看起来这是正确的)。在您的情况下,提供null 作为putObject 的第二个参数,并在返回的Future 上调用get() 可能更有意义,这将阻塞直到计算完成? (这当然会使您正在做的事情的异步性质有些无关紧要,但这似乎是您想要做的事情。)

    最后,如果你必须阻塞直到一切都完成,那么也许你根本不想使用异步 API,并且会对 synchronous API instead 更感兴趣。

    【讨论】:

      猜你喜欢
      • 2020-10-04
      • 2019-06-16
      • 2019-11-19
      • 2018-03-05
      • 2020-06-10
      • 2021-03-23
      • 2013-01-08
      • 1970-01-01
      • 2017-06-17
      相关资源
      最近更新 更多