基本上我需要在更多线程中运行〜数百个计算。我只想在paralell中运行一些并行线程,例如5个线程和5个计算。
我正在使用spring框架,@Async选项是自然选择。我不需要全功能的JMS队列,这对我来说有点麻烦。
有任何想法吗 ?谢谢
你检查了Task Executor吗?你可以定义一个线程池,其中包含最大数量的线程来执行任务。
Task Executor
如果要与结合@Async使用,请在spring-config中使用它:
@Async
<task:annotation-driven executor="myExecutor" scheduler="myScheduler"/> <task:executor id="myExecutor" pool-size="5"/> <task:scheduler id="myScheduler" pool-size="10"/>
如果你使用的是Spring的Java配置,则你的config类需要实现AsyncConfigurer:
AsyncConfigurer
@Configuration @EnableAsync public class AppConfig implements AsyncConfigurer { [...] @Override public Executor getAsyncExecutor() { ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); executor.setCorePoolSize(2); executor.setMaxPoolSize(5); executor.setQueueCapacity(50); executor.setThreadNamePrefix("MyExecutor-"); executor.initialize(); return executor; } }