1.配置 ThreadPoolTaskExecutor bean

 
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 扫描注解 -->
<context:component-scan base-package="com.qi.quartz">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />
</context:component-scan> <bean id="taskExecutor" name="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<!-- 核心线程数 线程池维护线程的最少数量 -->
<property name="corePoolSize" value="10" />
<!-- 线程池维护线程所允许的空闲时间 -->
<property name="keepAliveSeconds" value="200" />
<!-- 线程池维护线程的最大数量 -->
<property name="maxPoolSize" value="20" />
<!-- 线程池所使用的缓冲队列 -->
<property name="queueCapacity" value="100" />
<!-- 线程池对拒绝任务(无线程可用)的处理策略 ThreadPoolExecutor.CallerRunsPolicy策略 ,调用者的线程会执行该任务,如果执行器已关闭,则丢弃. -->
<property name="rejectedExecutionHandler">
<bean class="java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy" />
</property>
</bean> </beans> 2.controller使用

/**
* This file created at 2018年4月13日 下午3:06:57.
*
* Copyright (c) 2004-2014 AVTrace, Inc. All rights reserved.
*/
package com.avtrace.nlc.nms.listener;

import javax.annotation.Resource;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.jms.listener.SessionAwareMessageListener;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

/**
* @author 唐芝泉
* @since 1.0.0
*/
@Controller
@RequestMapping("/test")
public class test implements SessionAwareMessageListener<Message> {
Logger LOG = LoggerFactory.getLogger(test.class);
@Resource(name = "taskExecutor")
private ThreadPoolTaskExecutor taskExecutor;
@RequestMapping("/execute")
@ResponseBody
@Override
public void onMessage(Message message, Session session) throws JMSException {
taskExecutor.execute(new Runnable(){

public void run() {
try {
LOG.info("执行线程任务开始前");
Thread.currentThread().sleep(1000);
if (LOG.isDebugEnabled()) {
LOG.info("执行线程任务结束");
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}

});

//设置线程的存活时间
taskExecutor.setKeepAliveSeconds(60);
}

}

3、cmd f: (因为我把ad.exe放到f:\下)

<bean id="taskExecutor"
class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<property name="corePoolSize" value="4" /> <!-- 并发线程数,想达到真正的并发效果,最好对应CPU的线程数及核心数 -->
<property name="maxPoolSize" value="1000" /> <!-- 最大线程池容量 -->
<property name="queueCapacity" value="2000" /> <!-- 超过最大线程池容量后,允许的线程队列数 -->
</bean>

这里我是设置4并发数,最大线程池容量1000

F:\>ab -n 10000 -c 1000 http://192.168.40.21:8080/cctv/test/excute

这句命令表示10000次请求,1000个并发数 ,用时:1.206ms

比正常配置 10000*1000-4*1000=9996000

工具:链接: https://pan.baidu.com/s/1lg7BB-8OKSoluWOGjz03kw 密码: dz7i

最新文章

  1. sqlHelper做增删改查
  2. css3实现3D立体翻转效果
  3. MS SQL-Server快捷键
  4. RSA加密,应用授权及MSSQL备份与还原
  5. C++操作MySQL大量数据插入效率低下的解决方法
  6. js中的遍历foreach,$.each(),$().each()
  7. vm虚拟机启动失败 Global\vmx86
  8. Android.技术站点
  9. Idea 添加lib文件夹,并添加至项目Libary
  10. leetcode95 Unique Binary Search Trees II
  11. js验证身份证id
  12. PSYoungGen /PSOldGen/PSPermGen区别
  13. css权威指南(下)
  14. java+mysql对于表情的处理
  15. JaveScript基础(3)之正则表达式
  16. springboot~Integer和int如何选择,Integer的意义何在
  17. CentOS 7.4 初次手记:第一章 Linux守护进程(daemon)
  18. >CH07-cubemap
  19. LeetCode 527---Word Abbreviation
  20. Codeforces Round #295 (Div. 2)A - Pangram 水题

热门文章

  1. 熟悉servlet的页面跳转
  2. 使用Pycharm开发python下django框架项目生成的文件解释
  3. Day6 盒模型
  4. testNG测试基础一
  5. 【MFC】MFCMenuButton 的用法
  6. cmd中不能输入中文
  7. cms-数据库设计
  8. 进程peb结构、获得peb的方法
  9. 流媒体 5——MPEG声音
  10. 如何在SAP云平台上使用MongoDB服务