Spring多线程事务处理】的更多相关文章

在用多线程的时候,里面要用到Spring注入服务层,或者是逻辑层的时候,一般是注入不进去的.具体原因应该是线程启动时没有用到Spring实例不池.所以注入的变量值都为null. 详细:http://hi.baidu.com/adrianbutler/item/800218d90f23b0e53dc2cb95 因为我用的是@Autowired注入,不知道为什么 解决不了我的问题,继续查找资料,好在柳暗花明 详细: http://blog.csdn.net/majian_1987/article/d…
本篇主要描述一下spring的多线程的使用与定时任务的使用. 1.spring多线程任务的使用 spring通过任务执行器TaskExecutor来实现多线程与并发编程.通常使用ThreadPoolTaskExecutor来实现一个基于线程池的TaskExecutor. 首先你要实现AsyncConfigurer 这个接口,目的是开启一个线程池 代码如下: package com.foreveross.service.weixin.test.thread; import java.util.co…
5.Spring支持事务处理 5.1.事务准备 以上代码结构与AOP的前置通知.返回通知.异常通知.后置通知一样. 5.2.声明式事务 5.2.1.基于注解 5.2.2.基于配置文件 5. 3.事务传播属性 5.4.事务其他属性 5.4.1.事务的隔离级别 5.4.2.事物的回滚属性 5.4.3.超时与只读属性 5.5.使用xml文件配置事务…
6月14号  晴  最高温度37   今天很热的一天啊,开发的任务现在正在测试阶段,手头没有什么工作任务,忙里偷闲,丰富一下我的blog. 前两天有个需求:调用第三方接口,这个接口的响应时间有点长,需要5~7秒的响应,而且只能一条一条报文发送,实时返回结果,同步请求. 所遇到的问题:需要发送的数据量特别大的时候,响应时间可能需要好几十个小时,这个明显是不能接受的. 方案:初次遇到这样的问题,没有那么丰富的经验和解决方案,能想到的就是启动多线程来解决这个问题. 下边贴出我实现的关键代码和步骤,欢迎…
1,需求:使用多线程批量发送邮件 需要批量发送邮件大概400封左右,但是因为发送邮件受网络限制,所以经常导致等待超时.所以就想到了使用多线程来发邮件,因为是异步的所以返回结果不受发邮件影响. 2,思路:使用spring的ThreadPoolTaskExecutor,用10个线程循环400个任务,完成任务后关闭 首先创建一个发邮件的Task(任务),只是负责发邮件. 然后创建一个执行任务的类,让ThreadPoolTaskExecutor循环执行 创建一个ThreadPoolTaskExecuto…
在一个事务中使用多线程操作数据库时,若同时存在对数据库的读写操作,可能出现数据读取的不准确,因为多线程将不会共享同一个事务(也就是说子线程和主线程的事务不一样),为了解决这个问题,可以使用spring的分布式事务jta,并重写JtaTransactionManager的doCommit和doRollback方法. 1.引入maven依赖 <dependency> <groupId>com.atomikos</groupId> <artifactId>tran…
Spring4.x高级话题(二):多线程 一. 点睛 Spring通过任务执行器(TaskExecutor)来实现多线程和并发编程.使用ThreadPoolTaskExecutor可实现一个基于线程池的TaskExecutor.而实际开发中任务一般是非阻碍的,即异步的,所以我们要在配置类中通过@EnableAsync开启对异步任务的支持,并通过在实际执行的Bean的方法中使用@Async注解来声明其是一个异步任务. 二. 示例 1. 配置类 package org.light4j.sping4.…
事务模型描述 1.step之间事务独立 2.step划分成多个chunk执行,chunk事务彼此独立,互不影响:chunk开始开启一个事务,正常结束提交.chunk表示给定数量的item的操作集合,主要属性commit-interval,表示数量达到多少条提交一次.      图-job总体事务   图-step内部事务   3.chunk定义:默认设置commitInterval=N,即读取N条数据为一个chunk(采用默认SimpleCompletionPolicy),或者reader里面所…
在Spring框架下如何保证线程安全,如何很happy顺畅地并发编程. 常见的如下面的这坨代码,在Spring中,默认是单例的,也就是说,在同一时刻只有一个SpringOrdinaryClass的单实例.这时候如果类中有一个可变的成员变量,如VariableClass类型的var.在多 public class SpringOrdinaryClass { private VariableClass var = new VaribaleClass(); public void run(){ } /…
在spring任务调度的基础上增加多线程 三种方式: (1)使用OpenSymphony Quartz 调度器 (2)使用JDK Timer支持类 (3)SpringTaskExecutor抽象 spring 容器配置 <!-- 接收数据 --> <!-- 异步线程池 --> <bean id="threadPool" class="org.springframework.scheduling.concurrent.ThreadPoolTaskE…