项目用到了TaskExecutor,我看有的是通过spring bean配置的.有的是通过配置的方式,于是看了下官方文档,官方文档(好像是第30.5章)上写的很清楚,里面的参数的含义等东东,
<bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<!-- 核心线程数 -->
<property name="corePoolSize" value="${task.core_pool_size}" />
<!-- 最大线程数 -->
<property name="maxPoolSize" value="${task.max_pool_size}" />
<!-- 队列最大长度 -->
<property name="queueCapacity" value="${task.queue_capacity}" />
<!-- 线程池维护线程所允许的空闲时间,默认为60s -->
<property name="keepAliveSeconds" value="${task.keep_alive_seconds}" />
</bean>
<!-- 注解式 -->
<task:annotation-driven />
<!-- 或则 -->
<task:executor id="asyncTaskExecutor"
pool-size="${executor.pool.size}"
queue-capacity="${executor.queue.capacity}"
keep-alive="500"/>
至于SpringMVC整合TaskExecutor线程池的配置/使用
#------------ Task ------------
task.core_pool_size=5
task.max_pool_size=50
task.queue_capacity=1000
task.keep_alive_seconds=60
二、配置Spring的applicationContext.xml添加:
就是上面的配置
三、在实现层Impl声明并注入:
@Resource(name = "taskExecutor")
private TaskExecutor taskExecutor;
四、在方法里调用:
try {
taskExecutor.execute(new Runnable() {
public void run() {
//这里编写处理业务代码
}
});
} catch (Exception e) {
e.printStackTrace();
}