java多线程学习

使用springMVC的事务处理多线程。

 最近在做项目肚饿时候,用到多线程:批量迁移历史数据,(即将多个主机的数据文件,移动到另一台主机上,其中要使用到多线程)

模仿前辈的程序,把业务层实现后,开始进行事务处理。

使用DataSourceTransactionManager 类,
(1)在多线程的run方法中,创建事物状态,

DefaultTransactionDefinition def = new DefaultTransactionDefinition();// 获得事务状态
TransactionStatus status = transactionManager.getTransaction(def); 

(2)在最后进行transactionManager.commit(status);

(3)期间若程序出现错误,会抛出异常,从而触发事务回滚。

throw new RuntimeException(e);

(4)在进行了业务层的事务处理后,还要对Dao层(数据库查询时)进行事务处理。(否则会出现错误,即主线程提前结束,多线程不能正常结束)

@Transactional(readOnly=true)

在上网查资料时看到一句话,有理:多线程关键是协调。


(5)多线程,有的主线程提前结束,而多线程还没有结束, 解决方法:

让主线程sleep()一段时间。但若sleep的时间不合理,会影响性能。

posted @ 2015-09-28 18:37  yeemi  阅读(83)  评论(0编辑  收藏  举报