在研读JIVE代码时注意到在ForumFactory.java中
使用了双重检查成例,如下:
public abstract class ForumFactory {
private static Object initLock = new Object();
private static ForumFactory factory = null;
public static ForumFactory getInstance(Authorization authorization) {
...
if (factory == null) {
synchronized(initLock) {
if (factory == null) {factory =...}
}
}
}
}
但是在《JAVA与模式》中阎老师说:"双重检查成例"在JAVA中不能实现,
原因是factory 赋值与类初始化顺序不确定.
是不是类是abstract的就可以使用双重检查成例。谢谢!