多线程并发处理起来通常比較麻烦,假设你使用spring容器来管理业务bean,事情就好办了多了。spring封装了java的多线程的实现,你仅仅须要关注于并发事物的流程以及一些并发负载量等特性。

详细来说怎样使用spring来处理并发事务:

首先编写详细的事务逻辑,实现Runnable接口。比方说

package com.andy.threadDemo;



public class ThreadTransCode
implements Runnable{ 

    

  @Override

  public void run() {


    System.out.println("运行事务"); 

  }

}
然后要做的就是配置spring容器本身提供的线程池任务运行器:
<bean
id="taskExecutor"

    class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">


    <property
name="corePoolSize"
value="3"
/>

    <property
name="keepAliveSeconds"
value="200"
/>

    <property
name="maxPoolSize"
value="5"
/>

    <property
name="queueCapacity"
value="25"
/>

  </bean>
配置过程中主要关注于四个属性的配置
接下来要做的事就是在应用系统本身的业务bean中使用线程池任务运行器来运行并发事务。
在相应的业务bean中注入线程池任务运行器,像普通的spring bean一样。

<bean
id="bizManager"


      class="com.andy. threadDemo.BizManager"
>

      <property
name="taskExecutor">


        <ref
bean="taskExecutor"
/>

      </property>



</bean>
在业务代码中,通常以for循环的方式运行多个事务
for(int k = 0; k < n; k++) {    

        taskExecutor.execute(new ThreadTransCode());    

    }
其他繁琐的线程管理的事情就交给运行器去管理。

值得注意的事有两点
1, taskExecutor.execute(new ThreadTransCode());  激活的线程都是守护线程,主线程结束,守护线程就会放弃运行,这个在业务中式符合逻辑的。在单元測试中为了看到运行效果,须要自行堵塞主线程。

2, taskExecutor.execute(new ThreadTransCode());    的运行也不是全然安全的。在运行的过程中可能会由于须要的线程查过了线程队列的容量而抛出运行时异常,如有必要须要捕获。

使用spring的多线程机制的更多相关文章

  1. Java的多线程机制系列:不得不提的volatile及指令重排序(happen-before)

    一.不得不提的volatile volatile是个很老的关键字,几乎伴随着JDK的诞生而诞生,我们都知道这个关键字,但又不太清楚什么时候会使用它:我们在JDK及开源框架中随处可见这个关键字,但并发专 ...

  2. Java的多线程机制系列:(一)总述及基础概念

    前言 这一系列多线程的文章,一方面是个人对Java现有的多线程机制的学习和记录,另一方面是希望能给不熟悉Java多线程机制.或有一定基础但理解还不够深的读者一个比较全面的介绍,旨在使读者对Java的多 ...

  3. Python GIL 多线程机制 (C source code)

    最近阅读<Python源码剖析>对进程线程的封装解释: GIL,Global Interpreter Lock,对于python的多线程机制非常重要,其如何实现的?代码中实现如下: 指向一 ...

  4. Java的多线程机制系列:(四)不得不提的volatile及指令重排序(happen-before)

    一.不得不提的volatile volatile是个很老的关键字,几乎伴随着JDK的诞生而诞生,我们都知道这个关键字,但又不太清楚什么时候会使用它:我们在JDK及开源框架中随处可见这个关键字,但并发专 ...

  5. Java的多线程机制系列:(三)synchronized的同步原理

    synchronized关键字是JDK5之实现锁(包括互斥性和可见性)的唯一途径(volatile关键字能保证可见性,但不能保证互斥性,详细参见后文关于vloatile的详述章节),其在字节码上编译为 ...

  6. spring事务传播机制实例讲解

    http://kingj.iteye.com/blog/1680350   spring事务传播机制实例讲解 博客分类:   spring java历险     天温习spring的事务处理机制,总结 ...

  7. python多线程机制

    Python中的线程从一开始就是操作系统的原生线程.而Python虚拟机也同样使用一个全局解释器锁(Global Interpreter Lock,GIL)来互斥线程多Python虚拟机的使用. GI ...

  8. Spring事务传播机制和数据库隔离级别

    Spring事务传播机制和数据库隔离级别 转载 2010年06月26日 10:52:00 标签: spring / 数据库 / exception / token / transactions / s ...

  9. Spring Ioc工作机制 初步

    Spring IoC工作原理 Spring 启动时读取应用程序提供的Bean配置信息,并在Spring容器中生成一份相应的Bean配置注册表,然后根据这张注册表实例化Bean,装配好Bean之间的依赖 ...

随机推荐

  1. Email the output of a concurrent program as Attachment

    This article illustrates the steps to be followed to Email a concurrent program's output. Write a pr ...

  2. Android内存优化3 了解java GC 垃圾回收机制1

    开篇废话 如果我们想要进行内存优化的工作,还是需要了解一下,但这一块的知识属于纯理论的,有可能看起来会有点枯燥,我尽量把这一篇的内容按照一定的逻辑来走一遍.首先,我们为什么要学习垃圾回收的机制,我大概 ...

  3. OpenCV平面物体检测

    平面物体检测 这个教程的目标是学习如何使用 features2d 和 calib3d 模块来检测场景中的已知平面物体. 测试数据: 数据图像文件,比如 “box.png”或者“box_in_scene ...

  4. Android检测网络连接

    Android检测网络连接 import android.app.AlertDialog; import android.content.Context; import android.content ...

  5. 移动APP安全在渗透测试中的应用

    安全爱好者研究的往往是app的本地安全,比如远控.应用破解.信息窃取等等,大多人还没有关注到app服务端的安全问题,于是在这块的安全漏洞非常多. 移动app大多通过web api服务的方式跟服务端交互 ...

  6. Android studio 和 Eclipse快捷键对比

    操作 studio eclipse   debug/run 计算变量值 alt+F8 ctrl+shift+I 跳到下一步 F8 F6 跳到下一个断点 shift+F8 F8 进入到代码 F7 F5 ...

  7. Oracle imp关于fromuser 和 touser的用法

    fromuser就是把当前的dmp文件中的某一个用户下的数据取出.touser就是把现在dmp文件中的数据导入到目标库的指定user下.具体命令这样.exp userid=system/manager ...

  8. vue项目构建实战基础知识:SPA理解/RESTful接口介绍/static目录配置/axios封装/打包时map文件去除

    一.SPA 不是指水疗.是 single page web application 的缩写.中文翻译为 单页应用程序 或 单页Web应用,更多解释请自行搜索. 所有的前端人员都应该明白我们的页面的 u ...

  9. 使用git-svn迁移SVN至GitLab

    使用git-svn迁移SVN至GitLab 1.安装git和git-svn 后面的步骤中对git版本有一定要求,通过yum安装的git版本较低,这里进行编译安装 [root@DevTest ~]# y ...

  10. php.in

    [PHP] ;;;;;;;;;;; ; WARNING ; ;;;;;;;;;;; ; This is the default settings file for new PHP installati ...