我目前正在从事一个涉及许多独立运行的异步任务的项目。我有一个弹簧配置文件。
<task:executor id="taskScheduler" pool-size="5-20">
<task:executor id="specificTaskScheduler" pool-size="5-50" queue-capacity="100">
<!-- integration beans and
several object pools, with a total number of 100 beans created
using CommonsPoolTargetSource -->
我专门创建了两个执行器 - 一个用于 Spring 集成需求和自定义执行器,以便它仅运行我的任务,将其提供给具有显式引用的集成 bean。之后,我提供了一个需要处理的长时间运行的任务。我的 EAR 在 WebLogic 上运行,我转储了正在运行的线程的堆栈跟踪,并且非常失望地发现我的自定义执行程序中的 50 个线程中的大多数都在执行程序的队列中等待对象从池中可用。我不希望 CommonsPoolTargetSource 将我的执行程序用作管理其来源的平台。我可以在这里做什么?也许用 CommonsTargetSource bean 创建一个单独的 spring 文件可以解决它?谢谢你的任何想法。