Spring线程池配置说明

应用场景

1.上传视频的时候后台自动转换flv格式(JAVE)。
2.发文的时候通知关注我的人我更新文章了。
3.And等等。

JDK原生的线程池

public static final ThreadPoolExecutor threadPool = new ThreadPoolExecutor(20, 30, 3,
		TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(1),
		new ThreadPoolExecutor.CallerRunsPolicy());
	
	第一个参数是初始化线程池大小;
	第二个是最大线程池大小,当初始化的线程不能满足时,允许扩展到的线程池容量最大数;
	第三个是当前线程池的容量超出初始化线程池的大小,并且存在空闲线程。用来指定过了多少时间自动回收。
	第四个是时间单位
	第五个是workQueue,工作队列。一共有三种。(SynchronousQueue、 LinkedBlockingQueue、ArrayBlockingQueue)
	第六个是指定当线程池里面的线程都在工作。有新的任务进来是要执行的策略。
	    一共有4个
	    AbortPolicy(拒绝抛异常), 
	    CallerRunsPolicy(等待线程池中有空闲的线程,推荐使用), 
	    DiscardOldestPolicy(忽略最老的任务,然后执行我们提交的),
	    DiscardPolicy(忽略你提交的任务)。

Spring线程池使用

在spring配置文件加入以下内容,位置就不说了。

xmlns:task="http://www.springframework.org/schema/task"
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-3.0.xsd


以下策略2选一即可,一般只选第一种

1.当线程池满了时新来的线程等待有空闲线程执行 <task:annotation-driven executor="executorWithCallerRunsPolicy"/> <task:executor id="executorWithCallerRunsPolicy" pool-size="2-5" queue-capacity="50" rejection-policy="CALLER_RUNS"/>

2.当线程池满了时新来的线程直接抛出异常拒绝执行 <task:annotation-driven executor="executorWithPoolSizeRange"/> <task:executor id="executorWithPoolSizeRange" pool-size="2-5" queue-capacity="50" />

以上配置线程池的最大容量为”最大的pool-size+queue-capacity“,即为55。

配置好了之后,只需要在被spring管理的bean中的方法上面加入”@Async“注解即可,是不是很简单。

通过spring的线程池,简化了我们的开发。

转载于:https://my.oschina.net/zhmlvft/blog/476330

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值