【发布时间】:2021-12-31 04:11:09
【问题描述】:
我想使用CompletableFuture 异步调用 DynamoDB 并提供方法:
private CompletableFuture<UpdateItemResult> updateDynamodbAsync(UpdateItemRequest request) {
return CompletableFuture.supplyAsync(() -> {
UpdateItemResult result = amazonDynamoDBClient.updateItem(request);
return result;
});
}
代码的执行如下:
UpdateItemResult result = null;
CompletableFuture<UpdateItemResult> updateItemResultCompletableFuture = updateDynamodbAsync(updateItemRequest);
while (true) {
if (updateItemResultCompletableFuture.isDone()) {
result = updateItemResultCompletableFuture.get(3000, TimeUnit.MILLISECONDS);
break;
}
}
while 循环一直阻塞,直到请求完成,我认为这会阻塞进程。代码是否仍然是异步的,如果不是,我该如何改进它?
其次,我会通过空检查单独处理错误:
if (result == null) {
LOGGER.debug("The update operation in the DynamoDB is not sucessful .......");
return dbPresistenceResponseMap;
}
还好吗?
【问题讨论】:
标签: java asynchronous amazon-dynamodb java.util.concurrent completable-future