好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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

加载xml文件

在applicationcontext.xml文件里面添加

?

1

xmlns:task= "http://HdhCmsTestspringframework.org/schema/task"

xmlns文件并且xsi:schemalocation中添加

?

1

http: //HdhCmsTestspringframework.org/schema/task

?

1

http: //HdhCmsTestspringframework.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做多线程并发操作的代码实例的详细内容...

  阅读:17次