SpringBoot_线程池_ThreadPoolTaskExecutor-程序员宅基地

技术标签: Java  SpringBoot  


1. 线程池配置
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;

/**
* 线程池配置
* @author xiangni123
*
*/
@Configuration
public class ExecutorConfig {
private static int CORE_POOL_SIZE = 5;
private static int MAX_POOL_SIZE = 1000;
@Bean(name="taskExecutor")
public ThreadPoolTaskExecutor taskExecutor(){
ThreadPoolTaskExecutor poolTaskExecutor = new ThreadPoolTaskExecutor();
//线程池维护线程的最少数量
poolTaskExecutor.setCorePoolSize(CORE_POOL_SIZE);
//线程池维护线程的最大数量
poolTaskExecutor.setMaxPoolSize(MAX_POOL_SIZE);
//线程池所使用的缓冲队列
poolTaskExecutor.setQueueCapacity(200);
//线程池维护线程所允许的空闲时间
poolTaskExecutor.setKeepAliveSeconds(30000);
poolTaskExecutor.setWaitForTasksToCompleteOnShutdown(true);
return poolTaskExecutor;
}
}


2.相关线程
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class WxTestThread implements Runnable {

private static final Logger logger = LoggerFactory.getLogger(WxTestThread.class);
@Override
public void run() {
logger.info("执行线程!");
}
}


3.线程调用处

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;

import com.haoyi.demo.controller.HelloWorldController;
import com.haoyi.weixin.thread.WxTestThread;

@RestController
@RequestMapping("wxTest")
public class WxTestController {
private static final Logger logger = LoggerFactory.getLogger(WxTestController.class);
@Autowired
private ThreadPoolTaskExecutor taskExecutor;
@RequestMapping(value="helloWx")
public ModelAndView helloWx(){
logger.info("hello weixin!!!");
return new ModelAndView("wx/helloWeixin");
}
/**
* http://10.0.110.40:8088/wxTest/helloWxThread
* @return
*/
@RequestMapping(value = "helloWxThread", method = RequestMethod.GET)
public void helloWxThread(){
logger.info("hello weixin!!!");
setWxTestThread();
}
public void setWxTestThread(){
WxTestThread testThread = new WxTestThread();
taskExecutor.execute(testThread);
}
}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/shuzhupeng/article/details/79163932

智能推荐

C++ HashMap和Map的区别_c/c++ 红黑树map hash map-程序员宅基地

文章浏览阅读4.7k次,点赞5次,收藏17次。今天想查一下c++ hashmap的使用方法,搜出来的一些文章实在辣眼睛,竟然很多都混淆了c++中map和hashmap的区别。首先,c++ 标准库的std::map内部是排序的,内部使用的是红黑树实现,不管是增加还是查找的时间复杂度 O(logN)O(logN)O(logN)。而c++ 标准库的hashmap其实叫作std::unordered_map,其增加和查询的时间复杂度才是 O(1)..._c/c++ 红黑树map hash map

nginx配置ssl证书实现https访问_nginx 配置https-程序员宅基地

文章浏览阅读3.1w次,点赞15次,收藏123次。配置ssl证书之前,先准备SSL证书,至于获取的途径很多(阿里云的服务,第三方服务购买)。这里不详细解释。以下是我的SSL证书准备好证书后,找到nginx的安装目录,我的安装位置为:/usr/local/nginx进入 config/nginx.conf如果没有装winscp(一款可视化文件操作工具)的。可以通过命令行的方式,编辑nginx的config文件。开始配置文件的修改在修改配置文件之前,最好做一个备份,防止修改错误,也能及时回退错误1、找到第一个监听.._nginx 配置https

Vue环境搭建及项目创建_在html 搭建vue环境-程序员宅基地

文章浏览阅读340次,点赞2次,收藏3次。一、环境搭建1.引入 vue 有三种方式:在编写 html 时可以通过 Vue.js 官网直接下载 vue.min.js 文件并用 script 标签引入使用 cdn 方式<!-- 开发环境版本,包含了有帮助的命令行警告 --><script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script><!-- 生产环境版本,优化了尺寸和速度 --><script src="h_在html 搭建vue环境

国内EDA软件公司有哪些?-程序员宅基地

文章浏览阅读1.8k次。EDA:Electronic Design Automation,电子设计自动化。电子设计自动化是指利用计算机辅助设计(CAD)软件,来完成超大规模集成电路(VLSI)芯片的功能设计、综合..._全芯制造

mysql高可用详解(八):数据分片-程序员宅基地

文章浏览阅读3.4k次。分片技术的背景:横向扩展的方式可以很好的解决读负载的操作,但是无法解决写负载增加的问题;【将数据库分解的方式】功能分隔:将某些表分别放在不同的机器上;水平分隔:将某些表分隔成不同的行分别存储在不同的机器上;【数据分片】扩展写操作最直接的方法就是服务器之间不再有复制机制,这样它们就是完全分离的。通过这种结构,就可以将数据分成两个完全独立的自己,然后将客户端定向到它试图改变的数据所...

带进度条的按钮-程序员宅基地

文章浏览阅读911次。一、定义ProgressButton的自定义属性在attrs文件中定义ProgressButton的基本属性:主要有进度条颜色、进度条的背景颜色、按钮正常和被点击状态时的颜色、按钮的边角半径和是否显示进度信息。 二、继承Button自定义ProgressButtonpackage com.cx_带进度条的按钮

随便推点

Shuttle Puzzle-程序员宅基地

文章浏览阅读648次。题意:不想写,摘抄NOCOW翻译(http://www.nocow.cn/index.php/Translate:USACO/lgame)解题思路:读字典文件,将满足条件(每种字母的个数不超过输入序列中每个字母个数)的单词保存下来,存与diction中,diction_num保存diction的条数对单个单词,顺序列举一遍diction就能进行处理对两个单词,用两层循环来列举d

手工搭建K8s环境-程序员宅基地

文章浏览阅读815次。理解Kubernetes(1):手工搭建Kubernetes测试环境 理解Kubernetes系列文章:手工搭建环境基本概念和操作&nbsp;&nbsp;1. 基础环境准备准备 3个Ubuntu节点,操作系统版本为 16.04,并做好以下配置:系统升级设置 /etc/hosts 文件,保持一致设置从 0 节点上无密码ssh 其它两个节点节点名称IP地址...

mongo-java-driver-3.0.0-beta 如何关闭日志_com.mongodb.internal.diagnostics.logging.loggers-程序员宅基地

文章浏览阅读5k次。mongodb3已经出来,但驱动依然处于beta.现在maven上的版本是3.0.0-beta3。使用过程中发现大量的info日志,让人很不爽,就翻源代码.。发现 com.mongodb.diagnostics.logging.loggers在输出日志。driver判断了如果log4j存在就用log4j的配置,否则用java自带的日志 if (USE_SLF4J) {_com.mongodb.internal.diagnostics.logging.loggers

RocketMQ4.0源码分析之-消息消费管理-程序员宅基地

文章浏览阅读3.2k次,点赞2次,收藏10次。RocketMQ4.0源码分析之-消息消费管理一 前言如果横向比较RocketMQ中的各功能模块哪个最复杂,消息消费管理模块无疑是胜者。导致消息消费管理模块复杂度高的原因主要有以下几点:1) RocketMQ支持在线扩容和缩容,Broker或Consumer的数量变化后需要进行动态负载均衡。2) RocketMQ支持三个不同维度上进行分类的消费模式:广播消费/集群消

Unity随机数-程序员宅基地

文章浏览阅读206次。随机数Random.Range(大于等于的数,小于的数)egRandom.Range(1,7)_unity随机数

Playframework2.2.X路由接收多参数例子-程序员宅基地

文章浏览阅读2k次。先贴路由表设置,这里我设置了两个要接收的变量id和name,注意下定义的接受变量冒号后面不能有空格GET /testService/ CatalogPage.testService(id:Long,name:String)下面是我接收变量的函数,这里注意一下参数列表与路由一致,但是路由是 字段:类型 这里是 类型 字段public st