springboot微服务多线程与事务问题

springboot默认嵌入的容器是tomcat,tomcat是用线程池来处理网络请求的,所以在后台开发业务接口时需要考虑多线程环境下一些常见的问题,比如数据同步。如果涉及到数据库的操作时,常常会引入事务的问题,这时又必须考虑事务的隔离级别、事务的传播级别。如果一个接口既涉及加锁、又涉及事务,那么在进行业务逻辑设计时就必须要考虑或者说意识到以下几点:

1.通常事务的隔离级别是read-commited,一个事务只有提交后所做的改变才可以被其他事务读取到。

2.事务的传播级别一般是propagation-required,即子函数里的事务会加入到父函数里的事务中合成一个事务。

3.如果要通过加锁来实现数据同步,且在锁的范围内涉及到事务,请确保锁的范围一定要覆盖住事务的范围。比如如果一个service层的接口处于事务管理范围内,就需要在controller层加锁,才能确保一个线程里读到的数据一定是另一个线程里的事务提交之后的最新值。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值