通过在静态方法锁上使用同步,您将同步类的方法和属性(与实例方法和属性相对)
所以你的假设是正确的。
我想知道使方法同步是否是确保线程安全的正确方法。
并不是的。您应该让该工作代替您的RDBMS。他们擅长这类东西。
同步对数据库的访问将获得的唯一结果就是使您的应用程序非常慢。此外,在您发布的代码中,每次都在构建会话工厂,这样,与执行实际工作相比,您的应用程序将花费更多的时间访问数据库。
想象以下情况:
客户端A和客户端B尝试将不同的信息插入表T的记录X中。
使用您的方法,唯一得到的就是确保在数据库中无论如何都会发生一个被另一个调用的情况,因为RDBMS会阻止它们同时插入来自A的一半信息和来自B的一半信息。
。结果将相同,但仅慢5倍(或更多)。
也许最好看看Hibernate文档中的“事务和并发性”一章。在大多数情况下,您要解决的问题已经得到解决,并且是一种更好的方法。



