Spring 中默认自带线程池_org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor,一般有可以直接使用,这是时候使用的是默认的配置,直接使用_@Autowired注入使用

@Autowired
private ThreadPoolTaskExecutor poolTaskExecutor;

package com.timespark.door.test;import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;/**
?* @author summer
?* @version 创建时间:2018年10月6日 下午3:52:15 类说明
?*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:spring-context*.xml", "classpath*:ActiveMQ.xml" })
public class SummerTest {?? ?@Autowired
?? ?private ThreadPoolTaskExecutor poolTaskExecutor;?? ?@Test
?? ?public void testThreadPool() {
?? ??? ?poolTaskExecutor.execute(new Runnable() {?? ??? ??? ?@Override
?? ??? ??? ?public void run() {
?? ??? ??? ??? ?System.out.println("要做的事情.......");?? ??? ??? ?}
?? ??? ?});
?? ?}}

另外一种放方式是自己定义线程池的属性 ,通过xml文件配置 ,然后通过@Autowired注入,此时注入的变量名要和xml中配置的id一致,否则 Spring 容器中会有两个线程池,一个是默认的,一个是配置的

<bean id="poolTaskExecutor" ?class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
?? ? ? <!-- 核心线程数,默认为1 -->
?? ? ? <property name="corePoolSize" value="5" />
?? ? ? <!-- 最大线程数,默认为Integer.MAX_VALUE -->
?? ? ? <property name="maxPoolSize" value="50" />
?? ? ? <!-- 队列最大长度,一般需要设置值>=notifyScheduledMainExecutor.maxNum;默认为Integer.MAX_VALUE -->
?? ? ? <property name="queueCapacity" value="2000" />
?? ? ? <!-- 线程池维护线程所允许的空闲时间,默认为60s -->
?? ? ? <property name="keepAliveSeconds" value="100" />
?? ? ? <!-- 线程池对拒绝任务(无线程可用)的处理策略,目前只支持AbortPolicy、CallerRunsPolicy;默认为后者 -->
?? ? ? <property name="rejectedExecutionHandler">
?? ? ? ? ? <!-- AbortPolicy:直接抛出java.util.concurrent.RejectedExecutionException异常 -->
?? ? ? ? ? <!-- CallerRunsPolicy:主线程直接执行该任务,执行完之后尝试添加下一个任务到线程池中,可以有效降低向线程池内添加任务的速度 -->
?? ? ? ? ? <!-- DiscardOldestPolicy:抛弃旧的任务、暂不支持;会导致被丢弃的任务无法再次被执行 -->
?? ? ? ? ? <!-- DiscardPolicy:抛弃当前任务、暂不支持;会导致被丢弃的任务无法再次被执行 -->
?? ? ? ? ? <bean class="java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy" />
?? ? ? </property>
?? ?</bean>
?? ?

最后一种是基于JDK的线程池ThreadPooleExecutor

ThreadPoolExecutor executor = new ThreadPoolExecutor(50, 100, 200, TimeUnit.MILLISECONDS,
?? ? ? ? ? ? ? ? ? ?new ArrayBlockingQueue<Runnable>(500));
?? ??? ? executor.execute(new Runnable() {
?? ??? ??? ?
?? ??? ??? ?@Override
?? ??? ??? ?public void run() {
?? ??? ??? ??? ?// TODO Auto-generated method stub
?? ??? ??? ??? ?
?? ??? ??? ?}
?? ??? ?});?? ?

Spring 线程池使用相关推荐

  1. spring 线程池_Spring线程池服务

    spring 线程池 线程池对于执行同步和异步过程非常重要. 本文介绍如何使用Spring开发和监视线程池服务. 创建线程池已通过两种替代方法进行了说明. 二手技术 : JDK 1.6.0_21 春天 ...

  2. Spring线程池开发实战

    Spring线程池开发实战 作者:chszs,转载需注明. 作者博客主页:http://blog.csdn.net/chszs 本文提供了三个Spring多线程开发的例子,由浅入深,由于例子一目了然, ...

  3. spring线程池的理解和使用

    1.spring线程池 <bean id="taskExecutor" class="org.springframework.scheduling.concurre ...

  4. Spring线程池服务

    线程池对于执行同步和异步过程非常重要. 本文介绍如何使用Spring开发和监视线程池服务. 创建线程池已通过两种替代方法进行了说明. 二手技术 : JDK 1.6.0_21 Spring3.0.5 M ...

  5. spring线程池的使用

    为了尽量减少耗时操作对Action执行的影响,使用TaskExecutor线程池来管理耗时任务,作为后台进程执行,从而解决了问题. 场景:     使用了Struts和Spring,但Struts的A ...

  6. spring线程池使用

    为何使用多线程 对于复杂的业务逻辑下,有时候需要使用多线程执行,以优化项目的执行速度 单线程同步执行的场景中,如果前边出现异常,会导致所有任务中断,异步执行没有这样的问题 多线程实现方式:线程池 减少 ...

  7. Spring线程池异步传递MDC信息

    目录 1. 什么是MDC 2. 引入MDC打印步骤 2.1 pom依赖 2.2 log4j2打印日志配置文件 3 步骤演示 3.1 单线程业务使用示例 postman查询示例 查询代码 查询日志 3. ...

  8. spring线程池 java_Java 中几种常用的线程池

    概述: 在java内置API中操作线程所用到的类为Thread.创建线程一般有两种方式, 继承Thread方式 实现Runnable方式,并以runnable作为target创建Thread 在And ...

  9. Spring 线程池的使用和配置

    @Configuration @EnableAsync //开启异步调用 public class AsyncExecutorConfig {@Value("${thread.number} ...

最新文章

  1. 538. Convert BST to Greater Tree
  2. linux下C语言套接字编程sockaddr和sockaddr_in的区别
  3. Leetcode 153. 寻找旋转排序数组中的最小值 解题思路及C++实现
  4. WxMac BadgeLabels
  5. Meerkat倒下想到的:社交巨头的后院不容置喙
  6. 从零开始学习编程_如何开始学习编程
  7. 遍历聚合对象中的元素——迭代器模式(四)
  8. .net|dotnet应聘人员应该掌握的知识点
  9. (补充)【打印1到最大的n位数】剑指offer——面试题12:打印1到最大的n位数
  10. 过去的七天我是这样过的
  11. IDEA官方中文版插件
  12. python获取远程主机信息_python远程获取主机监控信息
  13. c还是java(雨思版)
  14. NLP 分类问题的讨论
  15. 杭电计算机导师6,杭州电子科技大学计算机学院导师教师师资介绍简介-贾刚勇...
  16. 导图解文 从梦想到财富(39)正确的创业方向,都落在3个必然趋势中
  17. 相亲软件的心灵测试原理,相亲成功率心理测试
  18. 浅谈 CRTP:奇异递归模板模式
  19. 软件工程 wc.exe 代码统计作业
  20. 视觉3D目标检测 | 从视觉几何到BEV检测

热门文章

  1. UML建模中的关系画法
  2. RabbitMQ 教程
  3. 一文教会你如何用Vue开发Chrome插件
  4. 2021年xshell过期如何解决
  5. 厦门大学c语言在线测试,厦门大学《C语言》模拟试卷(10级).doc
  6. 爬虫百度图片并下载的程序——C#程序
  7. 希捷3T硬盘松下mov变0字节视频恢复修复方法
  8. 定位、CSS3的动画
  9. 评语――作文起飞的翅膀(09上半年获奖的评价论文)
  10. 微信小程序改变手机电量,头部通知的颜色