java - Object StorageAsyc 不等待完成

标签 java asynchronous helidon

当我从 Helidon MP 主程序运行以下代码时,这对于所有同时上传都可以正常工作,但是 当我从测试运行代码时,我需要在服务器停止之前等待一些诸如 threadSleep(time) 之类的事情一段时间,以便上传所有文件,否则它只会上传几个文件。你能帮忙吗

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

最佳答案

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

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

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

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

关于java - Object StorageAsyc 不等待完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59063571/

相关文章:

Java,在没有try block 的情况下使用throw

java - 单击和调整大小时滚动条消失

java - 1 到 100 之间的所有平方和?

java - 如何正确使用 wait 和 notify 方法?

helidon - 我们如何在 Heldion SE 中实现依赖注入(inject)?

java - 如何使用 helidon-se 读取表单参数

java - 枚举数组到字符串数组

javascript - 使用 async/await 查找 cors 请求的值?

c++ - 是否可以在C++编写的gRPC异步服务器中使用智能PTR或Boost Intrusive Ptr作为 “void* tag”值

maven - 如何配置 Helidon 应用程序使用内存数据库进行集成测试?