【发布时间】:2018-07-13 14:03:12
【问题描述】:
我最近偶然发现了一段类似于下面的代码。这段代码确实很臭。看起来像单例,但不是因为没有私有构造函数。我确定这将有足够大的负载给它带来线程安全问题。专门给定的类实例。有人可以指出这段代码的线程安全问题吗?
public class AClass extends AnotherClass {
public static final AClass instance = new AClass();
public static SomeObject doSomethingThatCallsAService(Params params) {
return methodThatCallsService(params, instance);
}
public static SomeObject methodThatCallsService(Params params, AClass instance) {
-----call service here ---------
instance.doSomethingElse();
}
private void doSomethingElse() {
--- do some trivial work -----
}
}
【问题讨论】:
-
对象没有状态。线程安全问题从何而来?
-
感谢欧内斯特,问题是当对静态方法进行多次调用时会发生什么,该静态方法正在访问声明为静态的类的本地实例。
标签: java static thread-safety singleton