【发布时间】:2012-03-01 19:56:22
【问题描述】:
我知道构造函数不能在 Java 中同步。这是否意味着如果构造函数修改了类中的静态变量,并且可以从多个线程调用构造函数,则需要同步访问,如图所示?
public class MyClass {
private static int count = 0;
public MyClass() {
synchronized(MyClass.class) {
count++;
}
...
}
}
【问题讨论】:
-
您确实意识到静态、可变变量是一种代码味道,对吧?
-
@LouisWasserman,我没有意识到它们被认为是一种气味,但我现在知道了。谢谢。
-
Here 是一个可以解释为什么它们是代码味道的引文。它侧重于单例——这是静态的一个特殊例子——但这些问题更普遍。
标签: java multithreading constructor synchronization static-members