首页 > 解决方案 > 如何阻止阻塞队列大小在线程池执行器服务中增加?

问题描述

假设我有一个服务 A,它有一个线程池执行程序来调用服务 B。我们可以使用我们自己的值设置该池的核心池大小和队列。现在,服务 B 对请求的响应速度很慢,导致服务 A 线程池中的活动线程增加,从而导致阻塞队列大小增加。如何防止服务 A 的队列大小增加?

环境

标签: javamultithreading

解决方案


ThreadPoolExecutor有几个接受BlockingQueue的构造函数。

BlockingQueue是一个接口。一种实现是ArrayBlockingQueue,它有一个有界的大小。

的文档ThreadPoolExecutor明确提到了这一点:

3. 有界队列。有界队列(例如,ArrayBlockingQueue)在与有限的 maximumPoolSizes 一起使用时有助于防止资源耗尽,但可能更难以调整和控制。...


推荐阅读