`
zw7534313
  • 浏览: 837419 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
评论排行榜
最新评论

spring 线程池

阅读更多
spring4 线程池:把需要执行的Thread放入线程池中:缓冲队列 <!-- spring线程池 -->
 <bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
  <!-- 线程池维护线程的最少数量 -->
  <property name="corePoolSize" value="5"/>
  <!-- 线程池维护线程所允许的空闲时间 -->
  <property name="keepAliveSeconds" value="300"/>
  <!-- 线程池维护线程的最大数量 -->
  <property name="maxPoolSize" value="300"/>
  <!-- 线程池所使用的缓冲队列 -->
  <property name="queueCapacity" value="1000"/>
  
  <!--  线程池对拒绝任务(无线程可用)的处理策略,目前只支持AbortPolicy、CallerRunsPolicy;默认为后者 -->
  <property name="rejectedExecutionHandler">
   <!-- AbortPolicy:直接抛出java.util.concurrent.RejectedExecutionException异常 -->
   <!-- CallerRunsPolicy:主线程直接执行该任务,执行完之后尝试添加下一个任务到线程池中,可以有效降低向线程池内添加任务的速度 -->    <!-- DiscardOldestPolicy:抛弃旧的任务、暂不支持;会导致被丢弃的任务无法再次被执行 -->    <!-- DiscardPolicy:抛弃当前任务、暂不支持;会导致被丢弃的任务无法再次被执行 -->
   <bean class="java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy"/>
  </property>
 </bean>
 
 public class Test {
 
 public static void main(String[] args) {
 ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
 
 ThreadPoolTaskExecutor pool=(ThreadPoolTaskExecutor)app.getBean("taskExecutor");
  
 testSpringThreadPool(pool);
 }
 
 static void testSpringThreadPool(ThreadPoolTaskExecutor pool){
  
  pool.execute(new TestThread(0));
  for(int i=1;i<10000;i++){
   pool.execute(new TestThread(i));
  }
 }
 static class TestThread implements Runnable{
  private int num;
  
  public TestThread(int num){
   this.num=num;
  }
  public void run() {
   
   try {
    Thread.sleep(200);
   } catch (InterruptedException e) {
    e.printStackTrace();
   }
   System.out.println("thread "+num);
  }
  
 }
 
 
 
 
 
分享到:
评论
相关资源推荐
  • spring中使用线程池 bean 配置 applicationContext.xml =notifyScheduledMainExecutor.maxNum;默认为Integer.MAX_VALUE --> maven配置jar包 pom.xml    org.spring
  • Spring线程池和JDK的线程池的区别? API 文档中很清楚,SpringFrameWork 的 ThreadPoolTaskExecutor 是辅助 JDK 的 ThreadPoolExecutor 的工具类,它将属性通过 JavaBeans 的命名规则提供出来,方便进行配置。 1.ThreadPoolExecutor  Spring中的ThreadPoolTaskExecutor是借助于JDK并发包中的java.util
  • spring 多线程-线程池 1 类介绍 : 一:  ThreadPoolTaskExecutor是一个spring线程池技术,查看代码可以看到这样一个字段:     private ThreadPoolExecutor threadPoolExecutor;   可以发现,spring的  ThreadPoolTaskExecutor是使用的jdk中的java.util.concurrent.ThreadPo
  • Spring线程池和自定义线程池的使用 1、下面是自定义的线程池的代码public class SettThreadPoolExecutor { private static final Log LOG = LogFactory.getLog(SettThreadPoolExecutor.class); /** * 针对核心Thread的Max比率 ,以10为基数,8表示0.8 */ priva
  • spring线程池集成 spring线程池集成        spring线程池技术使用的是ThreadPoolTaskExecutor,当我们点进ThreadPoolTaskExecutor这个类的时候,可以看见里面是对于JDK中的ThreadPoolExecutor的封装:可见,ThreadPoolExecutor是ThreadPoolTaskExecutor类的一个属性.而其他几个属性正好也是ThreadPoo...
  • jdk单例线程池和sping线程池使用 java提供的原生线程池技术处理原理很清晰,故只要使用自己的原生线程池技术一般都能满足项目的需求。 import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; /** * 线程池管理(
  • springboot线程池的使用和扩展 我们常用ThreadPoolExecutor提供的线程池服务,springboot框架提供了@Async注解,帮助我们更方便的将业务逻辑提交到线程池中异步执行,今天我们就来实战体验这个线程池服务; 本文地址:http://blog.csdn.net/boling_cavalry/article/details/79120268 实战环境 windowns10; jdk1.8; spring
  • spring线程池配置及使用
  • 项目解析-spring异步线程池配置与使用 一、Spring配置 实际项目简单配置 <bean class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor"> 较完整参考
  • spring 无配置文件实现线程池管理 最近做一个文档转换功能比较耗时,所以用到了线程池来处理。Spring管理线程池有两种方式,第一种是XML配置文件配置线程池的Bean,然后在用的时候像Controller引用Service的Bean一样的引用线程池对象就可以了。第二种方式是无配置文件,就是全是java代码和注解就实现了。这里只讲解第二种方式。总共分三步实现吧,第一步:写一个配置线程池的java类,并在类上加上注解,如下代码:@Co...
  • Quartz应用——Spring和Quartz加线程池实际应用 公司最近开发需要用到定时任务,引用了微服务的概念,但是开发还是spring相关的项目,没有用到SpringCloud相关的微服务框架。定时任务我就没选择xxx-job,Elastic-Job。选择了Quartz,简单方便而且拓展行也高。 Spring是一个很优秀的框架,它无缝的集成了Quartz,简单方便的让企业级应用更好的使用Quartz进行任务的调度 一. Jar包依赖         使...
  • spring boot 线程池配置
  • spring框架管理线程池 今天来记录一下,如何通过 spring框架 简单配置并管理 线程池 1、首先需要搭建好一个简单的spring框架(当然知道是屁话) 如果不知道怎么搭建spring框架的同学可以看我的上一篇文章,也有可能是上上一篇文章(总之自己找吧)。 2、在applicationContext.xml中配置线程池,如下图: 代码需要码在beans标签内,代码如下: =m
  • spring线程池管理 &amp;lt;!-- spring线程池 --&amp;gt; &amp;lt;bean id = &quot;task&quot; class=&quot;org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor&quot;&amp;gt; &amp;lt;!-- 线程池维护线程的最少数量 --&amp;gt; &amp;lt;property name=&quot;corePoolSi...
  • Spring Boot线程池配置使用 首先,我们要了解什么是线程池,线程,大家应该都不陌生,我们可以把一个接口处理的单个任务当做一个线程,比如上传文件,调用接口,上传文件,上传完成。 这时会初始化一个线程,等待上传结束,线程销毁 。 但是这样会频繁的创建销毁线程,为了不浪费更多的系统资源,我们使用线程池概念,比如有有一个容器 我们初始化一部分核心线程,设置最大线程数,当客户访问我们的服务时,核心线程开始处理,处理完毕后不是销毁而是再放...
  • java config方式配置spring线程池 配置文件:thread.properties//线程池维护线程的最少数量 spring.corePoolSize=5 //允许的空闲时间 spring.keepAliveSeconds=200 //线程池维护线程的最大数量 spring.maxPoolSize=10 //缓存队列 spring.queueCapacity=20代码:import org.springframework.beans....
  • Spring Boot之线程池 在写框架的时候需要用到线程池,记录下使用方式ExecutePool配置,开启@EnableAsync支持异步任务@Configuration @EnableAsync public class ExecutorPool { private int corePoolSize = 10; private int maxPoolSize = 50; private int q...
  • Spring Boot异步线程池及异步编程 线程池中的两个概念:线程和任务,任务是需要线程去执行的。这里写一个支付相关的异步线程池的栗子:1、在application.properties中添加线程池的配置参数:# 支付相关的配置 pay.threadNamePrefix=pay-exec- pay.maxPoolSize=20 pay.corePoolSize=10 pay.queueCapacity=10002、基于注解进行参数的配置在...
  • Spring Boot线程池的使用心得 前言 前两天做项目的时候,想提高一下插入表的性能优化,因为是两张表,先插旧的表,紧接着插新的表,一万多条数据就有点慢了 后面就想到了线程池ThreadPoolExecutor,而用的是Spring Boot项目,可以用Spring提供的对ThreadPoolExecutor封装的线程池ThreadPoolTaskExecutor,直接使用注解启用 使用步骤 先创建一个线程池的配...
  • 线程池满了如何处理及spring参数设置: 线程池满了如何处理及spring参数设置:     多线程的问题,不仅仅考虑在代码中用线程池,在spring等上也许配置 并发问题也不是,单纯的在代码中同步,数据库zk等,也不仅仅是在nginx,tomcat调优也在jvm数据库有样的设置地方     线程池简介 自JDK1.5,Java吊炸天的并发包就提供线程池java.util.concurrent.ThreadPoolExec
Global site tag (gtag.js) - Google Analytics