項目用到了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線程池的配置/使用
一、配置jdbc.properties添加:
#------------ Task ------------task.core_pool_size=5task.max_pool_size=50task.queue_capacity=1000task.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();}