当我从 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/