我目前正在开发一个涉及大量独立运行的异步任务的项目。我有一个弹簧配置文件。
<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上运行,我转储了堆栈的正在运行的线程,并且非常失望地发现我的自定义执行程序中的大多数五十个线程在执行程序的队列中等待一个对象可以从池中获得。我不希望CommonsPoolTargetSource使用我的执行器作为管理其源的平台。我能在这做什么?也许用CommonsTargetSource bean创建一个单独的spring文件会解决它吗?谢谢你的任何想法。
答案 0 :(得分:0)
谢谢你们。原来这个池不是问题,我只需要添加更多实例,并稍微增加池大小,队列容量设置为零,并且拒绝策略设置为在调用者线程中执行调用。我还没有在重载下测试它。