【发布时间】:2012-09-05 18:19:36
【问题描述】:
对 obj 下面的线程的操作是否安全?我知道方法级别的变量和实例都在每个线程的堆栈上——但我不确定当局部变量是单例时会发生什么。 foo() 在 web 服务调用中被调用。我很好奇这是否是线程安全的?
public void foo() {
SomeObject obj = getSomeObject();
obj.doSomething(); // Would this be thread safe?
}
private SomeObject getSomeObject() {
// returns singleton
SpringContext.getBean("someObject");
}
class SomeObject {
int x;
...
// Not synchronized
public void doSomething() {
}
}
【问题讨论】:
-
如果它是一个单例(这取决于你在春季如何定义它),那么这绝不是线程安全的。你当然可以做一个测试和检查
标签: java multithreading thread-safety singleton