SpringMVC整合TaskExecutor线程池的配置/使用

原创
2018/07/05 16:48
阅读数 1.3W

task.properties

#核心线程数
task.core_pool_size=5
#最大线程数
task.max_pool_size=50
#队列最大长度
task.queue_capacity=1000
#线程池维护线程所允许的空闲时间,默认为60s
task.keep_alive_seconds=60

task.xml

<?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:task="http://www.springframework.org/schema/task"
  xmlns:context="http://www.springframework.org/schema/context"
  xsi:schemaLocation="
    http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-3.2.xsd
    http://www.springframework.org/schema/task
    http://www.springframework.org/schema/task/spring-task-3.2.xsd">

    <bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
        <!-- 核心线程数 -->
        <property name="corePoolSize" value="${task.core_pool_size}" />
        <!-- 最大线程数 -->
        <property name="maxPoolSize" value="${task.max_pool_size}" />
        <!-- 队列最大长度 -->
        <property name="queueCapacity" value="${task.queue_capacity}" />
        <!-- 线程池维护线程所允许的空闲时间,默认为60s -->
        <property name="keepAliveSeconds" value="${task.keep_alive_seconds}" />
    </bean>
    <!-- 注解式 -->
    <task:annotation-driven />
</beans>

Controller.java

@Resource(name = "taskExecutor")
private TaskExecutor taskExecutor;

//使用
taskExecutor.execute(new Runnable() {
            public void run() {
                //这里编写处理业务代码
                try {
                    smsService.sendMsg(telPhone, content);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });

 

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部