spring线程池的应用
加载xml文件
- xmlns:task="http://www.springframework.org/schema/task"
xmlns:task="http://www.springframework.org/schema/task"
xmlns文件并且xsi:schemaLocation中添加
- http://www.springframework.org/schema/task
http://www.springframework.org/schema/task
- http://www.springframework.org/schema/task/spring-task.xsd
http://www.springframework.org/schema/task/spring-task.xsd
在spring中配置Executor
- <bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
- <!-- 核心线程数 -->
- <property name="corePoolSize" value="${task.core_pool_size}" />
- <!-- 最大线程数 -->
- <property name="maxPoolSize" value="${task.max_pool_size}" />
- <!-- 队列最大长度 -->
- <property name="queueCapacity" value="${task.queue_capacity}" />
- <!-- 线程池维护线程所允许的空闲时间,默认为60s -->
- <property name="keepAliveSeconds" value="${task.keep_alive_seconds}" />
- </bean>
- <!-- 注解式 -->
- <task:annotation-driven />
- <bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
- <!-- 核心线程数 -->
- <property name="corePoolSize" value="${task.core_pool_size}" />
- <!-- 最大线程数 -->
- <property name="maxPoolSize" value="${task.max_pool_size}" />
- <!-- 队列最大长度 -->
- <property name="queueCapacity" value="${task.queue_capacity}" />
- <!-- 线程池维护线程所允许的空闲时间,默认为60s -->
- <property name="keepAliveSeconds" value="${task.keep_alive_seconds}" />
- </bean>
- <!-- 注解式 -->
- <task:annotation-driven />
在dbconfig.properties添加
- maxOpenPreparedStatements=20
- removeAbandoned=true
- removeAbandonedTimeout=1800
- logAbandoned=true
- maxOpenPreparedStatements=20
- removeAbandoned=true
- removeAbandonedTimeout=1800
- logAbandoned=true
这是分别对线程池做配置
添加依赖注入
- @Resource(name = "taskExecutor")
- private TaskExecutor taskExecutor;
- @Resource(name = "taskExecutor")
- private TaskExecutor taskExecutor;
使用线程池进行并发操作
- taskExecutor.execute(new Runnable() {
- @Override
- public void run() {
- // TODO Auto-generated method stub
- try {
- //要进行的并发操作
- } catch (Exception e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- });
- taskExecutor.execute(new Runnable() {
- @Override
- public void run() {
- // TODO Auto-generated method stub
- try {
- //要进行的并发操作
- } catch (Exception e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- });
提示
- @Controller
- public class IndexController {
- int studentscount = 0;
- @RequestMapping(value = "/index.html")
- public ModelAndView goIndex() {
- logBefore(logger, "列表Center");
- ModelAndView mv = this.getModelAndView();
- taskExecutor.execute(new Runnable() {
- @Override
- public void run() {
- // TODO Auto-generated method stub
- // 得到所有学生人数
- try {
- studentscount = coursesService.getStudentCount(pd);
- } catch (Exception e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- });
- mv.addObject("studentscount", studentscount);
- mv.setViewName("common/index");
- return mv;
- }
- @Controller
- public class IndexController {
- int studentscount = 0;
- @RequestMapping(value = "/index.html")
- public ModelAndView goIndex() {
- logBefore(logger, "列表Center");
- ModelAndView mv = this.getModelAndView();
- taskExecutor.execute(new Runnable() {
- @Override
- public void run() {
- // TODO Auto-generated method stub
- // 得到所有学生人数
- try {
- studentscount = coursesService.getStudentCount(pd);
- } catch (Exception e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- });
- mv.addObject("studentscount", studentscount);
- mv.setViewName("common/index");
- return mv;
spring线程池的应用的更多相关文章
- Spring线程池开发实战
Spring线程池开发实战 作者:chszs,转载需注明. 作者博客主页:http://blog.csdn.net/chszs 本文提供了三个Spring多线程开发的例子,由浅入深,由于例子一目了然, ...
- Spring线程池配置模板设计(基于Springboot)
目录 线程池配置模板 基础的注解解释 常用配置参数 配置类设计 线程池使用 ThreadPoolTaskExecutor源码 线程池配置模板 springboot给我们提供了一个线程池的实现,它的底层 ...
- Spring线程池ThreadPoolTaskExecutor配置及详情
Spring线程池ThreadPoolTaskExecutor配置及详情 1. ThreadPoolTaskExecutor配置 <!-- spring thread pool executor ...
- 分享知识-快乐自己:Spring线程池配置
Spring通过ThreadPoolTaskExecutor实现线程池技术,它是使用jdk中的Java.util.concurrent.ThreadPoolExecutor进行实现. Spring 配 ...
- Spring线程池由浅入深的3个示例
作者博客主页:http://blog.csdn.net/chszs 本文提供了三个Spring多线程开发的例子,由浅入深,由于例子一目了然,所以并未做过多的解释.诸位一看便知. 前提条件: 1)在Ec ...
- 【SSM Spring 线程池 OJ】 使用Spring线程池ThreadPoolTaskExecutor
最近做的Online Judge项目,在本地判题的实现过程中,遇到了一些问题,包括多线程,http通信等等.现在完整记录如下: OJ有一个业务是: 用户在前端敲好代码,按下提交按钮发送一个判题请求给后 ...
- spring线程池的同步和异步(1)
spring线程池(同步.异步) 一.spring异步线程池类图 二.简单介绍 2.1. TaskExecutor---Spring异步线程池的接口类,其实质是java.util.concurrent ...
- 007-多线程-JUC线程池-Spring线程池配置、池子如何配置参数
一.概述 Spring通过ThreadPoolTaskExecutor实现线程池技术,它是使用jdk中的Java.util.concurrent.ThreadPoolExecutor进行实现. 1.1 ...
- JDK线程池和Spring线程池的使用
JDK线程池和Spring线程池实例,异步调用,可以直接使用 (1)JDK线程池的使用,此处采用单例的方式提供,见示例: public class ThreadPoolUtil { private s ...
- spring线程池配置
源自:http://zjriso.iteye.com/blog/771706 1.了解 TaskExecutor接口 Spring的TaskExecutor接口等同于java.util.concurr ...
随机推荐
- linux下安装grpc插件 (c++和go语言)
在debian/ubuntu系统下,需要做如下准备操作: $ [sudo] apt-get install build-essential autoconf libtool pkg-config 如果 ...
- zabbix Server 4.0 触发器(Trigger)篇
zabbix Server 4.0 触发器(Trigger)篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.触发器(Trigger)概述 1>.上一篇博客我们介绍了“内 ...
- vue-cli 3 按需引入 element-ui
1.安装按需引入必要插件 npm install babel-plugin-component --save-dev 2.修改babel.config.js 3.在main.js中引入用到的组件,例如 ...
- scala 中的集合类
集合最重要的继承路线 —— Traversable -> Iterable -> Seq -> LinerSeq -> List Traversable 中的公有方法: 分类 ...
- 「NOI2016」循环之美
P1587 [NOI2016]循环之美 题目描述 牛牛是一个热爱算法设计的高中生.在他设计的算法中,常常会使用带小数的数进行计算.牛牛认为,如果在 $k$ 进制下,一个数的小数部分是纯循环的,那么它就 ...
- K-means: 多次random initialization来避免bad局部最优
K-means algorithm initialize K-means算法中有一步为随机初始化cluster centroids,这步如何进行,我们将介绍一种运行比较好的方法,这种方法比其它初始化的 ...
- Idea导入maven项目
1.idea中有项目的关闭项目 File>>close project 回到截图 下一步>下一步
- LightOJ - 1297 - Largest Box(数学)
链接: https://vjudge.net/problem/LightOJ-1297 题意: In the following figure you can see a rectangular ca ...
- Ubuntu18.04下安装Sublime Text3并解决不能输入中文
Ubuntu18.04下安装Sublime Text3并解决不能输入中文! 废话不多说,直接按顺序执行下面命令开始安装! wget -qO - https://download.sublimetext ...
- MySQL 是怎么保证数据一致性的(转载)
在<写数据库同时发mq消息事务一致性的一种解决方案>一文的方案中把分布式事务巧妙转成了数据库事务.我们都知道关系型数据库事务能保证数据一致性,那数据库到底是怎么设计事务这一特性的呢? 一. ...