如何解决spring线程安全问题,spring线程安全解决方法

首页 > 技术 > 作者:YD1662023-11-03 12:03:19

在多线程环境下,就可能会出现:方法执行完了(synchronized代码块执行完了),事务还没提交,别的线程可以进入被synchronized修饰的方法,再读取的时候,读到的是还没提交事务的数据,这个数据不是最新的,所以就出现了这个问题。

如何解决spring线程安全问题,spring线程安全解决方法(9)

三、解决问题

从上面我们可以发现,问题所在是因为@Transcational注解和synchronized一起使用了,加锁的范围没有包括到整个事务。所以我们可以这样做:

新建一个名叫SynchronizedService类,让其去调用addEmployee()方法,整个代码如下:

如何解决spring线程安全问题,spring线程安全解决方法(10)

如何解决spring线程安全问题,spring线程安全解决方法(11)

我们将synchronized锁的范围包含到整个Spring事务上,这就不会出现线程安全的问题了。在测试的时候,我们可以发现1000个线程跑起来比之前要慢得多,当然我们的数据是正确的:

如何解决spring线程安全问题,spring线程安全解决方法(12)

上一页1234下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.