1、spring线程池

<bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor"><!-- 线程池维护线程的最少数量,默认为1  --><property name="corePoolSize" value="5" /><!-- 线程池维护线程的最大数量,默认为Integer.MAX_VALUE --><property name="maxPoolSize" value="10" />     <!-- 允许的空闲时间,单位/秒,默认60秒 --><property name="keepAliveSeconds" value="200" /><!-- 缓存队列个数,默认为Integer.MAX_VALUE --><property name="queueCapacity" value="20" /><!-- 对拒绝任务(无线程可用)的处理策略 ThreadPoolExecutor.CallerRunsPolicy策略 ,调用者的线程会执行该任务,如果执行器已关闭,则丢弃.--><property name="rejectedExecutionHandler"><bean class="java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy" /></property>
</bean>

2、测试线程池

  • 需要的jar包

  • 测试代码:
package com.yw.thread.spring;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;public class MyThreadTaskTest {//@Autowired//private ThreadPoolTaskExecutor taskExecutor;public static void main(String[] args) {ApplicationContext ctx = new ClassPathXmlApplicationContext("spring-context.xml");  ThreadPoolTaskExecutor taskExecutor =  (ThreadPoolTaskExecutor)ctx.getBean("taskExecutor");  new MyThreadTaskTest().testTaskExecutor(taskExecutor);new MyThreadTaskTest().testTaskExecutor(taskExecutor);}public void testTaskExecutor(ThreadPoolTaskExecutor taskExecutor) {List<String> list = new ArrayList<String>();list.add("章程");list.add("流苏");list.add("漾须");Map<String, String> map = new HashMap<String, String>();for (int i=0; i<10; i++) {taskExecutor.execute(new testFor(list, map));}//不需要shutdown,否则这个线程池用过一次就不能再用了//taskExecutor.shutdown();//如果想要所有子线程执行完再执行主线程,那么就需要直接用到taskExecutor.getActiveCount()来判断while(true){if(taskExecutor.getActiveCount() == 0){break;}Thread.sleep(200);    }System.out.println("执行完毕===========================");System.out.println(map.toString());}
}class testFor implements Runnable{private List<String> list;private Map<String, String> map;public testFor(List<String> list, Map<String, String> map) {this.list = list;this.map = map;}@Overridepublic void run() {for (int i = 0; i < list.size(); i++) {System.out.println(Thread.currentThread().getName()+"="+list.get(i));map.put(Thread.currentThread().getName()+ "----" + i, list.get(i));}}
}

spring线程池的理解和使用相关推荐

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

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

  2. Spring线程池开发实战

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

  3. ThreadPoolExecutor线程池的理解与应用

    一.线程池与进程池的区别 两个关键词:线程,进程/池 池:可以将其理解为一种容器,有其固定的大小 什么时候用线程池/进程池,分两个问题讨论 1.什么时候用池:当程序中的任务并发数远远大于计算机的承受能 ...

  4. Spring线程池服务

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

  5. java 线程池的理解_JAVA线程池原理的理解

    线程池原理基础理解: 线程池初始化规定个数的线程,然后这些线程一直运行,并且监控线程队列,只要线程队列被添加进线程,那么线程池不断从队列中取出线程运行.直到队列中的线程为空.实例代码如下: packa ...

  6. java 并发线程池的理解和使用

    一.为什么要用线程池 合理利用线程池能够带来三个好处. 第一:降低资源消耗.通过重复利用已创建的线程降低线程创建和销毁造成的消耗. 第二:提高响应速度.当任务到达时,任务可以不需要的等到线程创建就能立 ...

  7. spring线程池的使用

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

  8. 详谈线程池的理解和应用

    一.线程池的好处 线程池是啥子,干啥使它呀,老子线程使得好好的,非得多次一举,哈哈,想必来这里看这篇文章的都对线程池有点了解.那么我来整理整理线程池的好处吧. 1.线程池的重用 线程的创建和销毁的开销 ...

  9. Android中常见的4种线程池的理解(转)

    转:https://blog.csdn.net/l540675759/article/details/62230562 转:https://blog.csdn.net/seu_calvin/artic ...

最新文章

  1. dubbo原理_dubbo实现原理介绍
  2. Druid 配置_LogFilter
  3. 修改bootstrap modal模态框的宽度
  4. java创建读取文件_Java实现文件的创建、读取、写入操作-Fun言
  5. mysql使用条件限制乐观锁_使用Mysql乐观锁解决并发问题
  6. JavaScript原生实现《贪吃蛇》
  7. 设计模式 抽象工厂(Abstract Factory Pattern)
  8. 如何从PDF中删除页面?
  9. 服务器linux命令aux,Linux查看所有进程ps -aux命令介绍
  10. 10个优秀的JavaScript参考手册
  11. 学习笔记(一)数据挖掘概念与技术
  12. solidworks新建工程图默认单位为毫米
  13. win10做好备份如何恢复系统
  14. autocad application 版本
  15. 为虚拟机配置静态ip地址
  16. 西安市经开区-公司设立流程-公司名称审核
  17. 7. 伪随机数的生成
  18. 百度竞价排名曝光_百度爱采购的三大优势,及如何发优质商品。
  19. 1824. Minimum Sideway Jumps 贪心和DP方法
  20. Anaconda点开 一直停留在 loading applications。。。

热门文章

  1. python操作word文档——python-docx
  2. 最好用的 12 款 Vue Timepicker 时间日期选择器测评推荐 - 卡拉云
  3. UICollectionView自定义Layout教程
  4. 应用Ai Mac预定义渐变的图文教程
  5. Kettle java脚本、javascript脚本、SQL脚本
  6. 关于UI界面每个界面尺寸适配的问题
  7. conda换源 pip 换源 ubuntu windows完美解决方案~
  8. MYSQL 最大连接数
  9. C#读取照片EXIF中的日期时间(家庭相片管理工具之一)
  10. 新华三 测试工程师春招一面面经