谁能帮小弟解释一下下面这个.java文件,我看DAO看到这里就开始不明白了,请教各位。解释最好详细一点,谢谢!DAOFactory.java
package login3.db.factory;import login3.db.DAOInterface.UserDAO;
import login3.db.kingdao.factory.DAOFactory_kingdao;public abstract class DAOFactory {  private static Object initLock = new Object();    //这个线程锁是什么意思?  private static DAOFactory factory = null;     //为什么要将本类的实例作为私有属性呢?  public static DAOFactory getInstance() {
      if (factory == null) {
          synchronized (initLock) {             //这行是什么意思?
              if (factory == null) {
                  try {                      factory = new DAOFactory_kingdao();  //为什么要new一个DAOFactory_kingdao()方法?                  } catch (Exception e) {                      e.printStackTrace();
                      return null;
                  }
              }
          }
      }
      return factory;
  }
  public abstract UserDAO createUserDAO();
}