gpt4 book ai didi

java - 局部变量同步,比同步方法更好?

转载 作者:行者123 更新时间:2023-12-01 18:41:41 27 4
gpt4 key购买 nike

我编写了一个围绕数据库查询的包装器,需要从不同的线程访问它。因此,我的应用程序恰好创建了该帮助程序类的一个实例,并通过 getter 返回它。

DbConnection dbc = app.getDatabaseConnection();
synchronized (dbc) {
dbc.doSomething();
}

这段代码安全吗?如前所述here尽管在局部变量上同步,但它应该可以工作。只要保证对象实例相同,这是否正确?

使 DbConnection 的所有受影响的实例方法同步是否是更好的方法?

最佳答案

这不是好的设计。

不是通过在必要时同步其方法/ block 来使 DBConnection 类本质上是线程安全的,而是强制此类的所有客户端在每次需要时显式同步。因此,您不是将线程安全性封装在单个、明确的类中,而是将该责任分配给该类的所有客户端,从而使整个事情变得极其脆弱,并且潜在的错误极难发现。

也就是说,从多个线程使用单个数据库连接本身就是一个坏主意。

关于java - 局部变量同步,比同步方法更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19731540/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com