如果满足某些条件如何停止线程执行

时间:2021-06-22 14:39:57

标签: java multithreading rest executorservice java.util.concurrent

假设我有一个服务尝试从数据库加载数据,如果数据库中不存在数据,它会尝试从主数据库加载,如果在那里也找不到它,它将尝试从另一个 API 获取。

这是客户端给加载数据的业务需求。

在最坏的情况下,我们如何减少我的休息端点的响应时间?

我正在尝试使用执行程序服务框架来生成多个线程以异步运行,但是如果其中一个线程返回成功的响应(加载数据),我不知道如何停止剩余线程的执行。对此的任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

当您向 ExecutorService 执行 submit 任务时,它会返回一个 Future
只需调用 Futurecancel​() 方法。来自文档:

<块引用>

尝试取消此任务的执行。如果任务已完成、已被取消或由于其他原因无法取消,则此尝试将失败。如果成功,并且在调用取消时此任务尚未启动,则不应运行此任务。如果任务已经开始,则 mayInterruptIfRunning 参数决定是否应该中断执行此任务的线程以尝试停止任务。