zoukankan      html  css  js  c++  java
  • spring线程池的应用

    加载xml文件

    在ApplicationContext.xml文件里面添加
    [java] view plain copy
     
    1. xmlns:task="http://www.springframework.org/schema/task"  
    xmlns:task="http://www.springframework.org/schema/task"
    xmlns文件并且xsi:schemaLocation中添加
    [java] view plain copy
     
    1. http://www.springframework.org/schema/task   
    http://www.springframework.org/schema/task 
    [java] view plain copy
     
    1. http://www.springframework.org/schema/task/spring-task.xsd  
    http://www.springframework.org/schema/task/spring-task.xsd



    在spring中配置Executor

    在ApplicationContext.xml文件里面添加
    [java] view plain copy
     
    1. <bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">  
    2.         <!-- 核心线程数 -->       
    3.         <property name="corePoolSize" value="${task.core_pool_size}" />  
    4.         <!-- 最大线程数 -->    
    5.         <property name="maxPoolSize" value="${task.max_pool_size}" />  
    6.         <!-- 队列最大长度 -->  
    7.         <property name="queueCapacity" value="${task.queue_capacity}" />  
    8.         <!-- 线程池维护线程所允许的空闲时间,默认为60s -->  
    9.         <property name="keepAliveSeconds" value="${task.keep_alive_seconds}" />  
    10.     </bean>  
    11.     <!-- 注解式 -->  
    12.     <task:annotation-driven />  
    1.  
      <bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
    2.  
      <!-- 核心线程数 -->
    3.  
      <property name="corePoolSize" value="${task.core_pool_size}" />
    4.  
      <!-- 最大线程数 -->
    5.  
      <property name="maxPoolSize" value="${task.max_pool_size}" />
    6.  
      <!-- 队列最大长度 -->
    7.  
      <property name="queueCapacity" value="${task.queue_capacity}" />
    8.  
      <!-- 线程池维护线程所允许的空闲时间,默认为60s -->
    9.  
      <property name="keepAliveSeconds" value="${task.keep_alive_seconds}" />
    10.  
      </bean>
    11.  
      <!-- 注解式 -->
    12.  
      <task:annotation-driven />
    在dbconfig.properties添加
    [java] view plain copy
     
    1. maxOpenPreparedStatements=20  
    2. removeAbandoned=true  
    3. removeAbandonedTimeout=1800  
    4. logAbandoned=true  
    1.  
      maxOpenPreparedStatements=20
    2.  
      removeAbandoned=true
    3.  
      removeAbandonedTimeout=1800
    4.  
      logAbandoned=true
    这是分别对线程池做配置
     

    添加依赖注入

    在所需要的service或者controller类里面添加
    [java] view plain copy
     
    1. @Resource(name = "taskExecutor")  
    2. private TaskExecutor taskExecutor;  
    1.  
      @Resource(name = "taskExecutor")
    2.  
      private TaskExecutor taskExecutor;

    使用线程池进行并发操作

    代码如下
    [java] view plain copy
     
    1. taskExecutor.execute(new Runnable() {  
    2.   
    3.     @Override  
    4.     public void run() {  
    5.         // TODO Auto-generated method stub  
    6.         try {  
    7.                                        //要进行的并发操作  
    8.         } catch (Exception e) {  
    9.             // TODO Auto-generated catch block  
    10.             e.printStackTrace();  
    11.         }  
    12.     }  
    13. });  
    1.  
      taskExecutor.execute(new Runnable() {
    2.  
       
    3.  
      @Override
    4.  
      public void run() {
    5.  
      // TODO Auto-generated method stub
    6.  
      try {
    7.  
      //要进行的并发操作
    8.  
      } catch (Exception e) {
    9.  
      // TODO Auto-generated catch block
    10.  
      e.printStackTrace();
    11.  
      }
    12.  
      }
    13.  
      });



     

    提示

    注意在线程中操作变量时候变量的作用域范围。需要在这个controller或者sevice中声明变量如下
    [java] view plain copy
     
    1. @Controller  
    2. public class IndexController {  
    3. int studentscount = 0;  
    4. @RequestMapping(value = "/index.html")  
    5.     public ModelAndView goIndex() {  
    6.         logBefore(logger, "列表Center");  
    7.         ModelAndView mv = this.getModelAndView();  
    8.                 taskExecutor.execute(new Runnable() {  
    9.   
    10.                 @Override  
    11.                 public void run() {  
    12.                     // TODO Auto-generated method stub  
    13.                     // 得到所有学生人数  
    14.                     try {  
    15.                                           studentscount = coursesService.getStudentCount(pd);  
    16.                     } catch (Exception e) {  
    17.                         // TODO Auto-generated catch block  
    18.                         e.printStackTrace();  
    19.                     }  
    20.   
    21.                 }  
    22.             });  
    23.                   mv.addObject("studentscount", studentscount);  
    24.                   mv.setViewName("common/index");  
    25.                   return mv;  
    26. }  
      1.  
        @Controller
      2.  
        public class IndexController {
      3.  
        int studentscount = 0;
      4.  
        @RequestMapping(value = "/index.html")
      5.  
        public ModelAndView goIndex() {
      6.  
        logBefore(logger, "列表Center");
      7.  
        ModelAndView mv = this.getModelAndView();
      8.  
        taskExecutor.execute(new Runnable() {
      9.  
         
      10.  
        @Override
      11.  
        public void run() {
      12.  
        // TODO Auto-generated method stub
      13.  
        // 得到所有学生人数
      14.  
        try {
      15.  
        studentscount = coursesService.getStudentCount(pd);
      16.  
        } catch (Exception e) {
      17.  
        // TODO Auto-generated catch block
      18.  
        e.printStackTrace();
      19.  
        }
      20.  
         
      21.  
        }
      22.  
        });
      23.  
        mv.addObject("studentscount", studentscount);
      24.  
        mv.setViewName("common/index");
      25.  
        return mv;
      26.  
  • 相关阅读:
    hdoj--1162--Eddy's picture(最小生成树)
    hdoj--1087--Super Jumping! Jumping! Jumping!(贪心)
    hdoj--1051--Wooden Sticks(LIS)
    hdoj--5532--Almost Sorted Array(正反LIS)
    CodeForces--609C --Load Balancing(水题)
    poj--2631--Roads in the North(树的直径 裸模板)
    CodeForces--606A --Magic Spheres(模拟水题)
    CodeForcess--609B--The Best Gift(模拟水题)
    hdoj--1201--18岁生日(模拟)
    poj--1985--Cow Marathon(树的直径)
  • 原文地址:https://www.cnblogs.com/keyi/p/11350549.html
Copyright © 2011-2022 走看看