java线程中使用事务,关于在多线程中使用Spring的事务管理:该怎么处理

关于在多线程中使用Spring的事务管理:

关于Spring的事务管理:

在线程类中添加Spring的事务管理,好像不管用。

下面这段代码运行后,有可能抛出异常:“在表中插入重复键值”。

我怀疑是UpdateData这个方法并没有作为一个事务运行导致的。

大家帮我看看是怎么回事儿?

public class DataSyncServiceImpl implements DataSyncService {

private myDao dao;

private static Object lock = new Object();

@Override

public void RelayDataSync() {

List threads = new ArrayList();

try{

synchronized(lock){

for(int i=0;i

myThread thread = new myThread(dao);

thread.start();

}

}

}catch(Exception exp){

exp.printStackTrace();

}

}

}

@Service

public class myThread extends Thread{

private myDao dao;

public myThread(){

}

public myThread(myDao  dao){

this.myDao =dao;

}

public void run(){

Connection conn = null;

try{

conn = getConnection();

List datas = getDataFromOtherDatabase(conn);

UpdateData(datas);

}catch(Exception e){

e.printStackTrace();

}

finally{

XXX

}

}

@Transactional

private void UpdateData(List datas){

try{

this.myDao.DeleteData(XXX);

for(Data data : datas){

this.myDao.InsertData(data);

}

}catch(Exception e){

e.printStackTrace();

}

}

}

------解决方案--------------------

锁的位置是不是  不太合适?

另外 主键 生成策略 修改为 IDENTITY试试

------解决方案--------------------

是不是有人在黑 CSDN 三楼这种情况最近一直出现啊

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值