专栏
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
更新
©版权归慕课网所有,未经许可不得转载
精选留言
写留言
奶茶三兄弟d
老师,我想问下,就是2个请求同时到达一个被事务管理起来的方法中,事务的隔离级别为 读提交级别,传播行为是REQUIRED,那是不是每个请求都会开启一个新的事务? 2、我用synchronized包裹了2个sql方法,一个是查询某行数据的一个字段值,一个是更新这行数据的那个字段值, 我想下老师,就是如果第一个请求线程进来后,进入了synchronized内,先查询,后修改了一个值,然后第一个请求线程走出synchronized代码块,接着第二个请求线程进入了synchronized内,同样也是先查询,后修改那同一个值,那他先查询的值,是否是第一个请求线程更新后的值,还是说查询到的是第一个请求线程更新之前的值, 麻烦老师解答一下,谢谢
讲师回复:首先这里你犯了概念不清的问题。synchronized是Java的概念,而隔离级别是数据库的概念,两者不属于同一个概念,其他的语言可以是可以使用隔离级别。而一般企业不会用synchronized去控制数据库的操作,这样是线程锁的概念,比较复杂,性能又差。 1、如果不考虑事务嵌套(传播行为)的问题,请求到业务层标注@Transactional时,会启用事务,如果你使用Required,按你的说法是会为每一个请求分配独立的事务的; 2、不知道你的synchronized的锁情况,只是企业不会这样控制,更多的是使用数据库隔离级别是控制执行顺序避免出错,或者使用乐观锁,只是乐观锁,比较复杂,这里谈不清可以参考网上的资料。
2019-09-17
3
0
0
/
登录后可任选
个小节免费阅读
¥
立即购买
课程目录
取消
评论
发送
精选留言 写留言
奶茶三兄弟d
2019-09-17 3 0