多线程并发处理起来通常比較麻烦,假设你使用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. ScheduledExecutorService run方法要加入try catch

    原文:http://www.andyqian.com/2018/03/07/java/javaSmallDetail/ 前言 今天我们一起来做个简单有趣的实验.熟悉Java的童鞋,对Scheduled ...

  2. java 多线程处理一个list的集合

    原文:http://blog.csdn.net/jenny8080/article/details/52100312 import java.util.ArrayList; import java.u ...

  3. 使用moment.js管理时间

    如果在nodejs下 npm install moment 引用模块: var moment = require('moment'); 用法: 当前时间:2015-11-07 18:00:51 mom ...

  4. opencv Mat 像素操作

    1 cv::Mat cv::Mat是一个n维矩阵类,声明在<opencv2/core/core.hpp>中.   class CV_EXPORTS Mat { public: //a lo ...

  5. 白话空间统计之:Moran&#39;s I(莫兰指数)

    前两天聊了空间统计学里面的两个经典概念,今天来说说第一篇文章留下的大坑:Moran's I. 首先,Moran's I这个东西.官方叫做:莫兰指数,是澳大利亚统计学家帕特里克·阿尔弗雷德·皮尔斯·莫兰 ...

  6. pyPdf - 用Python方便的处理PDF文档

    pyPdf库 ( http://pybrary.net/pyPdf/ ) ,操作起来相当直接易懂,把代码贴在这儿,做个记录.  1 from pyPdf import PdfFileWriter, P ...

  7. Jupyter Notebook 快捷键

    Jupyter Notebook 快捷键 从命令模式进入编辑模式需按 Enter 键,从编辑模式切换到命令模式需按Esc 键. Jupyter Notebook 是一个交互式笔记本程序, 其有丰富的快 ...

  8. ISP图像调试工程师——自动白平衡(熟悉3A算法)

    http://blog.csdn.net/wzwxiaozheng/article/details/40586293 https://wenku.baidu.com/view/24632048767f ...

  9. [HTML5] Track First Contentful Paint with PerformanceObserver and Google Analytics

    "If you can't measure it, you can't improve it." The first step when doing performance wor ...

  10. Java中常用的6种排序算法详细分解

    排序算法很多地方都会用到,近期又重新看了一遍算法,并自己简单地实现了一遍,特此记录下来,为以后复习留点材料. 废话不多说,下面逐一看看经典的排序算法: 1. 选择排序 选择排序的基本思想是遍历数组的过 ...