public static ExecutorService taskExecutor = Executors.newFixedThreadPool(5);
public static ExecutorService taskExecutor = new ThreadPoolExecutor(2, 5,
60L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>());
<bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<!-- 核心线程数 ${task.core_pool_size}-->
<property name="corePoolSize" value="5" />
<!-- 最大线程数${task.max_pool_size}-->
<property name="maxPoolSize" value="10" />
<!-- 队列最大长度 ${task.queue_capacity}-->
<property name="queueCapacity" value="20" />
<!-- 线程池维护线程所允许的空闲时间,默认为60s ${task.keep_alive_seconds}-->
<property name="keepAliveSeconds" value="60" />
</bean>
线程池的类型
1.CachedThreadPool
适合使用在任务量 大但耗时少的任务。
2.FixedThreadPool
适合使用在任务量比 较固定但耗时长的任务。
3.ScheduledThreadPool
适合使用在执行 定时任务和具体固定周期的重复任务。
4.SingleThreadPool
适合使用在多个任务 顺序执行的场景。
5.newWorkStealingPool
适合使用在很耗 时的任务中。