问题描述
假设我有一个服务尝试从数据库加载数据,如果数据库中不存在数据,它会尝试从主数据库加载,如果在那里也找不到它,它将尝试从另一个 API 获取。
这是客户端给加载数据的业务需求。
在最坏的情况下,我们如何减少我的休息端点的响应时间?
我正在尝试使用执行程序服务框架来生成多个线程以异步运行,但是如果其中一个线程返回成功的响应(加载数据),我不知道如何停止剩余线程的执行。对此的任何帮助表示赞赏。
解决方法
当您向 ExecutorService
执行 submit 任务时,它会返回一个 Future
。
只需调用 Future
的 cancel()
方法。来自文档:
尝试取消此任务的执行。如果任务已完成、已被取消或由于其他原因无法取消,则此尝试将失败。如果成功,并且在调用取消时此任务尚未启动,则不应运行此任务。如果任务已经开始,则 mayInterruptIfRunning 参数决定是否应该中断执行此任务的线程以尝试停止任务。