gpt4 book ai didi

springmvc配置线程池Executor做多线程并发操作的代码实例

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 24 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章springmvc配置线程池Executor做多线程并发操作的代码实例由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

加载xml文件 。

在applicationcontext.xml文件里面添加 。

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

xmlns文件并且xsi:schemalocation中添加 。

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

在spring中配置executor 。

在applicationcontext.xml文件里面添加 。

?
1
2
3
4
5
6
7
8
9
10
11
12
<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添加 。

?
1
2
3
4
maxopenpreparedstatements= 20
removeabandoned= true
removeabandonedtimeout= 1800
logabandoned= true

这是分别对线程池做配置 。

添加依赖注入 。

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

?
1
2
@resource (name = "taskexecutor" )
private taskexecutor taskexecutor;

使用线程池进行并发操作 。

代码如下 。

?
1
2
3
4
5
6
7
8
9
10
11
12
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中声明变量如下 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
@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;

总结 。

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

原文链接:https://blog.csdn.net/u014320421/article/details/79295944 。

最后此篇关于springmvc配置线程池Executor做多线程并发操作的代码实例的文章就讲到这里了,如果你想了解更多关于springmvc配置线程池Executor做多线程并发操作的代码实例的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com