ObjectStorageAsyc不等待完成

时间:2019-11-27 05:27:49

标签: java asynchronous helidon

当我在Helidon MP Main Program的代码下运行时,此功能对于所有同时上传均正常,但 当我从Test运行代码时,我需要等待一些时间,例如threadSleep(time),然后服务器停止所有文件的上传,否则,它只会上传一些文件。你能帮忙

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

1 个答案:

答案 0 :(得分:1)

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

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

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

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