ThreadPoolTaskExecutor线程池参数配置

ThreadPoolTaskExecutor线程池参数配置一、线程池配置1、ThreadPoolConfigimportorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importorg.springframework.scheduling.annotation.EnableAsync;importorg.springframework.scheduling.concurrent.Threa

大家好,又见面了,我是你们的朋友全栈君。

一、线程池配置

1、ThreadPoolConfig

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import java.util.concurrent.Executor;
import java.util.concurrent.ThreadPoolExecutor;
@Configuration
public class ThreadPoolConfig { 

private final static int AVAILABLE_PROCESSOR = Runtime.getRuntime().availableProcessors();
/** * 通用线程池配置 */
@Bean("taskPoolExecutor")
public Executor taskExecutor() { 

ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
//设置线程池参数信息
taskExecutor.setCorePoolSize(6);
taskExecutor.setMaxPoolSize(6*2);
taskExecutor.setQueueCapacity(12);
taskExecutor.setKeepAliveSeconds(60);
taskExecutor.setThreadNamePrefix("taskPoolExecutor--");
taskExecutor.setWaitForTasksToCompleteOnShutdown(true);
taskExecutor.setAwaitTerminationSeconds(60);
//修改拒绝策略为使用当前线程执行
taskExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.AbortPolicy());
//初始化线程池
taskExecutor.initialize();
return taskExecutor;
}
/** * 发送短信线程池 * @return */
@Bean("sendSmsThreadPool")
public Executor sendSmsThreadPool() { 

ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
//设置线程池参数信息
taskExecutor.setCorePoolSize(AVAILABLE_PROCESSOR);
taskExecutor.setMaxPoolSize(AVAILABLE_PROCESSOR + 1);
taskExecutor.setQueueCapacity(256);
taskExecutor.setKeepAliveSeconds(20);
taskExecutor.setThreadNamePrefix("sendSmsThreadPool--");
taskExecutor.setWaitForTasksToCompleteOnShutdown(true);
taskExecutor.setAwaitTerminationSeconds(60);
//修改拒绝策略为使用当前线程执行
taskExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
//初始化线程池
taskExecutor.initialize();
return taskExecutor;
}
/** * 发送邮件线程池 * @return */
@Bean("sendEmailThreadPool")
public Executor sendEmailThreadPool() { 

ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
//设置线程池参数信息
taskExecutor.setCorePoolSize(AVAILABLE_PROCESSOR);
taskExecutor.setMaxPoolSize(AVAILABLE_PROCESSOR + 1);
taskExecutor.setQueueCapacity(256);
taskExecutor.setKeepAliveSeconds(20);
taskExecutor.setThreadNamePrefix("sendEmailThreadPool--");
taskExecutor.setWaitForTasksToCompleteOnShutdown(true);
taskExecutor.setAwaitTerminationSeconds(60);
//修改拒绝策略为使用当前线程执行
taskExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
//初始化线程池
taskExecutor.initialize();
return taskExecutor;
}
@Bean(name = "threadPoolTaskExecutor")
public ThreadPoolTaskExecutor threadPoolTaskExecutor() { 

ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(5);
executor.setMaxPoolSize(5);
executor.setQueueCapacity(10);
executor.setKeepAliveSeconds(300);
executor.setThreadNamePrefix("thread-ayokredit"); //线程名称
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
return executor;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/136737.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • QMap简单用法

    QMap简单用法QMap提供了一个从类项为key的键到类项为T的直的映射,通常所存储的数据类型是一个键对应一个直,并且按照Key的次序存储数据,这个类也支持一键多值的情况,用类QMultiMapQHash具有和QMap几乎完全一样的APi,此类维护这一张哈希表,表的大小和数据项是自适应的,QHash是以任意的顺序住址他的数据,,当然了他也是可以支持一键多值的,QMultiHash两种之间的区别是:

  • 基于MQTTnet 3.0.12实现MQTT服务器和客户端「建议收藏」

    基于MQTTnet 3.0.12实现MQTT服务器和客户端「建议收藏」基于MQTTnet3.0.12实现MQTT服务器和客户端概述-可看可不看的废话MQTT是啥MQTTnet正文MQTTServer/Broker实现MQTTServer/Broker创建MQTTServer/Broker发布消息MQTTClient实现MQTTClient创建MQTTClient发布消息MQTTClien订阅消息MQTTClien取消订阅消息概述-可看可不看的废话公司基于制造业客户的数据采集需求,在布局自己的数据中台。现在物联网的概念很火,辣条从业7年来一直号称是“自动化

  • jsonschema校验json数据_接口校验不通过

    jsonschema校验json数据_接口校验不通过何为Json-SchemaJson-schema是描述你的JSON数据格式;JSON模式(应用程序/模式+JSON)有多种用途,其中之一就是实例验证。验证过程可以是交互式或非交互式的。例如,应用程序可以使用JSON模式来构建用户界面使互动的内容生成除了用户输入检查或验证各种来源获取的数据。(来自百度百科)相关jar包<dependency><groupId>com.github.fge</groupId><artifactId&g

  • linux修改文件名字_linux搜索文件名命令

    linux修改文件名字_linux搜索文件名命令在Linux环境下修改文件名可以有不同的命令方式,比如rename、mv都可以进行修改,如果用户正在了解这方面的知识,可以阅读下文了解Linux修改文件名以及批量修改文件名的方法。对于单个的文件,可以直接使用命令,那如果有大量的类似格式的文件名需要修改成其他格式的,该如何呢?比如某次测试后,保存的文件为Lan1.txt,Lan2.txt,……Lan100.txt这一百个文件需要在前面添加前缀变成…

    2022年10月24日
  • 多个excel表格批量替换名称_bat文件名批量替换固定位置

    多个excel表格批量替换名称_bat文件名批量替换固定位置今天在替换开机动画时,遇到了批量替换文件名的固定部分的问题,相信大家都遇到过。如果你还没有很好的办法,可以试试下面的方式(请看解决步骤)。分析问题先看下236个图片文件的名字,分析“2019.06.06海尔小哈联名logo_00000.jpg”与“p01_sys_logo0000.jpg”的区别; 发现需要把每个图片名字的“2019.06.06海尔小哈联名logo_0”改为“p01_…

    2022年10月26日
  • BootStrap初始

    序言什么是BootstrapBootstrap是Twitter开源的基于HTML、CSS、JavaScript的前端框架。它是为实现快速开发Web应用程序而设计的一套前端工具包。它支持响应式布

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号