1. 通過XML定義bean
1 <!-- Spring線程池 -->
2 <bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
3 <!-- 核心線程數 -->
4 <property name="corePoolSize" value="5" />
5 <!-- 線程池維護線程的最大數量 -->
6 <property name="maxPoolSize" value="10" />
7 <!-- 允許的空閑時間, 默認60秒 -->
8 <property name="keepAliveSeconds" value="60" />
9 <!-- 任務隊列 -->
10 <property name="queueCapacity" value="50" />
11 <!-- 線程超過空閑時間限制,均會退出直到線程數量為0 -->
12 <property name="allowCoreThreadTimeOut" value="true"/>
13 <!-- 對拒絕task的處理策略 -->
14 <property name="rejectedExecutionHandler">
15 <bean class="java.util.concurrent.ThreadPoolExecutor.DiscardOldestPolicy" />
16 </property>
17 </bean>
2. 使用task:executor方式
1 <?xml version="1.0" encoding="UTF-8"?>
2 <beans xmlns="http://www.springframework.org/schema/beans"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xmlns:task="http://www.springframework.org/schema/task"
5 xsi:schemaLocation= 6 "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 7 http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd">
8
9 <!-- 包路徑掃描 -->
10 <context:component-scan base-package="spring.task"/>
11
12 <!-- 定義線程池 -->
13 <task:executor id="executor" pool-size="5" queue-capacity="10" rejection-policy="DISCARD_OLDEST"/>
14
15 </beans>