91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

springmvc如何配置線程池Executor做多線程并發操作

發布時間:2021-08-20 13:46:31 來源:億速云 閱讀:390 作者:小新 欄目:編程語言

這篇文章主要介紹springmvc如何配置線程池Executor做多線程并發操作,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

加載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; 
}

以上是“springmvc如何配置線程池Executor做多線程并發操作”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

济阳县| 丰都县| 灯塔市| 浦北县| 且末县| 尼玛县| 绵竹市| 鹰潭市| 沽源县| 孟连| 中方县| 黎川县| 三原县| 安阳市| 耿马| 巴南区| 芒康县| 收藏| 宝清县| 龙门县| 商南县| 石家庄市| 桂阳县| 靖远县| 临城县| 榆社县| 沙河市| 保亭| 广河县| 旺苍县| 五华县| 尉氏县| 莱州市| 定安县| 黔江区| 拜泉县| 昌吉市| 奉化市| 高台县| 乌拉特前旗| 大厂|