java – CompletableFuture:异步调用void函数
我试图在某些数据库异常上使用重试策略实现数据库查询.重试策略的代码不是很相关,所以我没有包含它.正如您在下面的代码中看到的那样 – 我编写了一个retryCallable,它采用重试策略和populateData()中的Callable. 在getDataFromDB中,我从DB获取数据并将数据放在全局散列图中,该散列图充当应用程序级别的缓存. 此代码按预期工作.我想从另一个类调用populateData.但是,这将是一个阻止呼叫.由于这是数据库并且具有重试策略,因此这可能很慢.我想异步调用populateData. 我如何使用CompletableFuture或FutureTask来实现这一目标?
最佳答案
如果将populateData方法拆分为两个部分,一个是获取数据的供应商,另一个是存储它的消费者,则可以很容易地将它们与CompletableFuture链接起来.
然后,在populateData()中:
使用Executor的supplyAsync版本是可选的.如果您使用单个arg版本,您的任务将在公共池中运行;适用于短期运行任务,但不适用于阻止的任务. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Java动态代理(设计模式)代码详解
- Docker+Jenkins持续集成环境(4):使用etcd+confd实现容器服务
- 将对象放入java.util.Properties中
- java-Rabbitmq引发AmqpException:类[B没有找到方法
- java.lang.Long cannot be cast to java.lang.Integer解决办
- LinkedList如何在Java内部工作?
- Java微信支付之服务号支付代码示例
- java – CheckStyle,FindBugs和PMD配置没有重叠
- java 中函数的参数传递详细介绍
- Java ConcurrentHashMap Example and Iterator--转