为什么单态需要同步

我在学习jive的程序中觉得这段代码有点难理解。
private static void loadAuthorizationFactory() {
if (factory == null) {
synchronized(className) {
......
try {
Class c = Class.forName(className);
factory = (AuthorizationFactory)c.newInstance();
}
catch (Exception e) {
......
}
}
}
上面的那段程序中,为什么要synchronized(className)呢?请大家指点

这和多线程争夺资源有关。

可参考相关帖子:

http://www.jdon.com/jive/article.jsp?forum=91&thread=17578