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