【发布时间】:2013-11-01 17:00:55
【问题描述】:
我为数据库查询编写了一个包装器,需要从不同的线程访问它。因此,我的应用程序只创建了该帮助程序类的一个实例,并通过 getter 将其返回。
DbConnection dbc = app.getDatabaseConnection();
synchronized (dbc) {
dbc.doSomething();
}
这段代码安全吗?如here 所述,尽管在局部变量上同步,但它应该可以工作。只要保证对象实例相同,这是否正确?
让所有受影响的 DbConnection 实例方法同步是否更好?
【问题讨论】:
-
如果可能的话,你应该让
dbc成为private,更重要的是final。
标签: java multithreading thread-safety synchronized local-variables