ThreadPoolTask​​Executor死锁

时间:2018-07-06 08:46:10

标签: java spring asynchronous concurrency future

我们的应用程序正在使用Spring @Async启动异步任务(例如,对REST API进行并行调用)。我们的ThreadPoolTask​​Executor已配置为16 corepoolsize,128 maxpool和128队列大小。

异步任务可以启动更多异步任务,依此类推,这些任务可以嵌套得很深。有了足够多的并发请求,加上称为REST API的响应时间很慢,我们很容易陷入僵局。 corepool中的所有任务都在等待队列中子任务的结果。由于核心池已满,队列中的子任务将不会执行。因此陷入僵局。

输出异步方法如下所示: @Async public Future<String> asyncCallAPI() { return new AsyncResult<>(callAPI()); }

避免这些死锁的最佳方法是什么?

0 个答案:

没有答案