【发布时间】:2016-08-02 22:05:34
【问题描述】:
前几天浏览一些 Java 代码时,我看到了一些我以前从未见过的东西,对此有些困惑。部分代码如下:
public class PreferredAlternateProxy {
...
private static PreferredAlternateProxy instance;
...
public static PreferredAlternateProxy getInstance(){
if(instance == null)
createInstance();
return instance;
}
private static synchronized void createInstance(){
if(instance == null)
instance = new PreferredAlternateProxy();
}
}
声明与公共类同类的静态属性的目的是什么?这在什么情况下有用?
使第二个方法(createInstance())同步的目的是什么?
【问题讨论】:
-
"What is the purpose of making the second method (createInstance()) synchronized?"-- 所以可以懒惰地创建一个且只有一个实例。 -
这段代码,是不是完全断章取义?或者它是否有文档、cmets 或其他解释?
-
它是作为创建类似课程时的指南发送给我的,因此实际上没有上下文或 cmets
-
"使第二个方法 (createInstance()) 同步的目的是什么?它叫做double-checked locking。
-
@Tony 您可能还想阅读what is so bad about singletons?。
标签: java static synchronization public