实例分享springmvc配置线程池Executor做多线程并发操作

  • 更新时间:2020-03-21 09:49:42
  • 编辑:储昊乾

加载xml文件

在ApplicationContext.xml文件里面添加

xmlns:task="http://www.springframework.org/schema/task" 

xmlns文件并且xsi:schemaLocation中添加

http://www.springframework.org/schema/task  
http://www.springframework.org/schema/task/spring-task.xsd 

在spring中配置Executor

在ApplicationContext.xml文件里面添加

<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 /> 

在dbconfig.properties添加

maxOpenPreparedStatements=20 
removeAbandoned=true 
removeAbandonedTimeout=1800 
logAbandoned=true 

这是分别对线程池做配置

添加依赖注入

在所需要的service或者controller类里面添加

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

使用线程池进行并发操作

代码如下

taskExecutor.execute(new Runnable() { 
  @Override 
  public void run() { 
    // TODO Auto-generated method stub 
    try { 
       //要进行的并发操作 
    } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
    } 
  } 
}); 

提示

注意在线程中操作变量时候变量的作用域范围。需要在这个controller或者sevice中声明变量如下

@Controller 
public class IndexController { 
int studentscount = 0; 
@RequestMapping(value = "/index.html") 
  public ModelAndView goIndex() { 
    logBefore(logger, "列表Center"); 
    ModelAndView mv = this.getModelAndView(); 
        taskExecutor.execute(new Runnable() { 
        @Override 
        public void run() { 
          // TODO Auto-generated method stub 
          // 得到所有学生人数 
          try { 
                     studentscount = coursesService.getStudentCount(pd); 
          } catch (Exception e) { 
            // TODO Auto-generated catch block 
            e.printStackTrace(); 
          } 
        } 
      }); 
         mv.addObject("studentscount", studentscount); 
         mv.setViewName("common/index"); 
         return mv; 
} 

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对码农之家的支持。如果你想了解更多相关内容请查看下面相关链接

相关教程

  • Javamvc项目框架视频之SpringMVC框架

    Javamvc项目框架视频之SpringMVC框架,JavaEE体系结构包括四层,从上到下分别是应用层、Web层、业务层、持久层。Struts和SpringMVC是Web层的框架,Spring是业务层的框架,Hibernate和MyBatis是持久层的框架。

    发布时间:2021-06-06

  • 自定义spring mvc的json视图实现思路解析

    这篇文章主要介绍了自定义spring mvc的json视图的实现思路解析,本文给大家介绍的非常详细,具有参考借鉴价值,需要的朋友可以参考下

    发布时间:2019-06-04

  • JavaScript数据可视化编程

    JavaScript数据可视化编程

    大小:61.8 MBjs编程电子书

  • Java微服务

    Java微服务

    微服务是利用云平台开发企业应用程序的最新技术,它是小型、轻量和过程驱动的组件。微服务适合设计可扩展、易于维护的应用程序。它可以使开发更容易,还能使资源得到最佳利用。本书

    大小:120 MBJava电子书

  • PHP、MySQL与JavaScript学习手册(第4版)

    PHP、MySQL与JavaScript学习手册(第4版)

    本书有借助面向对象的编程基础,深入学习PHP。研究MySQL,从数据库结构到复杂查询。掌握JavaScript语言,以及带有jQuery的增强功能。调用Ajax进行后台浏览器/服务器通信等,欢迎免费下载

    大小:76 MBPHP学习手册电子书

  • Java测试驱动开发

    Java测试驱动开发

    《Java测试驱动开发》最大特点是很薄,看起来没有什么负担。这本书的作用是通过实战让你培养TDD的思路,小编觉得挺不错的,感兴趣的小伙伴们可以参考一下。

    大小:9.17 MBJava电子书

  • Java从小白到大牛(含源码)

    Java从小白到大牛(含源码)

    Java从小白到大牛是一本Java语言学习教程,读者群是零基础小白,通过本书的学习能够成为Java大牛。主要内容包括:Java语法基础、数据类型、运算符、控制语句、数组、字符串、面向对象基础、继承与多态、抽象类与接口、集合框架、异常处理、输入输出和网络编程等技术。

    大小:15.6 MBJava电子书

  • Java高并发编程详解:多线程与架构设计

    Java高并发编程详解:多线程与架构设计

    《Java高并发编程详解》立足于线程源码剖析,从基础入手,逐层渐进深入,环环紧扣,针对技术细节进行了细致归纳,在解读源码的时候又引入了优秀的架构设计。

    大小:120.77 MBJava编程电子书

  • Java jdk12 API官方文档(jdk13帮助文档)

    Java jdk12 API官方文档(jdk13帮助文档)

    Java12 API文档,记录Java12语言中的类、方法、接口信息。目前官方最新版本jdk13,是这里提供 Java12 API官方文档CHM版和jdk13帮助文档html完整版 ,都是官方英文版的,需要的朋友可下载试试! ps:另外请查看右键-属性-解除锁定,否则点击 右边框不会显示相应内容 JDK13到今天已经发布快3个月了,之前有零零散散的试过一些新的特性,但却没有整体的整理一下。想到作为Java开发,连使用的JDK(Java Developerment Kit)有什么特性都不清楚,实在是有些不应

    大小:85.9 MBjdk12学习

用户留言