spring中线程池默认大小(源码)

@ConditionalOnClass(ThreadPoolTaskExecutor.class)
@Configuration(proxyBeanMethods = false)
@EnableConfigurationProperties(TaskExecutionProperties.class)
public class TaskExecutionAutoConfiguration {

	/**
	 * Bean name of the application {@link TaskExecutor}.
	 */
	public static final String APPLICATION_TASK_EXECUTOR_BEAN_NAME = "applicationTaskExecutor";

	@Bean
	@ConditionalOnMissingBean
	public TaskExecutorBuilder taskExecutorBuilder(TaskExecutionProperties properties,
			ObjectProvider<TaskExecutorCustomizer> taskExecutorCustomizers,
			ObjectProvider<TaskDecorator> taskDecorator) {
		TaskExecutionProperties.Pool pool = properties.getPool();
		TaskExecutorBuilder builder = new TaskExecutorBuilder();
		builder = builder.queueCapacity(pool.getQueueCapacity());
		builder = builder.corePoolSize(pool.getCoreSize());
		builder = builder.maxPoolSize(pool.getMaxSize());
		builder = builder.allowCoreThreadTimeOut(pool.isAllowCoreThreadTimeout());
		builder = builder.keepAlive(pool.getKeepAlive());
		Shutdown shutdown = properties.getShutdown();
		builder = builder.awaitTermination(shutdown.isAwaitTermination());
		builder = builder.awaitTerminationPeriod(shutdown.getAwaitTerminationPeriod());
		builder = builder.threadNamePrefix(properties.getThreadNamePrefix());
		builder = builder.customizers(taskExecutorCustomizers.orderedStream()::iterator);
		builder = builder.taskDecorator(taskDecorator.getIfUnique());
		return builder;
	}

	@Lazy
	@Bean(name = { APPLICATION_TASK_EXECUTOR_BEAN_NAME,
			AsyncAnnotationBeanPostProcessor.DEFAULT_TASK_EXECUTOR_BEAN_NAME })
	@ConditionalOnMissingBean(Executor.class)
	public ThreadPoolTaskExecutor applicationTaskExecutor(TaskExecutorBuilder builder) {
		return builder.build();
	}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ThreadPoolTaskExecutor是Spring框架的一个工具类,用于创建和管理线程池。它提供了一些参数来配置线程池的行为,下面是主要的参数说明: 1. corePoolSize: 线程池的核心线程数,即线程池始终保持活动的线程数量。默认值为1。 2. maxPoolSize: 线程池的最大线程数,即线程池允许的最大线程数量。当队列已满且当前活动线程数小于最大线程数时,线程池会创建新的线程来处理任务。默认值为Integer.MAX_VALUE。 3. queueCapacity: 任务队列的容量。当线程池的线程数量达到核心线程数时,新任务会被放入队列等待执行。默认值为Integer.MAX_VALUE。 4. keepAliveSeconds: 非核心线程的空闲时间超过此值时,会被销毁。默认值为60秒。 5. threadNamePrefix: 线程名称的前缀。可用于调试和识别线程池创建的线程。 6. allowCoreThreadTimeOut: 是否允许核心线程超时,即当线程池的线程数量超过核心线程数时,是否销毁空闲的核心线程。默认为false。 7. rejectedExecutionHandler: 当线程池和任务队列都已满时,用于处理被拒绝的任务的策略。常用的策略有AbortPolicy(默认,直接抛出RejectedExecutionException)、CallerRunsPolicy(由调用线程执行任务)、DiscardPolicy(丢弃任务)、DiscardOldestPolicy(丢弃最旧的任务)。 这些参数可以根据实际需求进行配置,以便实现对线程池的灵活控制和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值