饿汉式就是在线程访问前他已经实例化完成对于懒汉式,你要调用getInstance才以实例化,然而对多线程来说他们可能同调用getInstance,假如第一个线程已经初始化完成,那么第二,第三等等线程因为同时调用了getInstance就算第一个线程已经实例化完成,他们不知道依然对其进行了实例化,与单类设计模式不符,所以要加上同步锁,如果给getInstance方法加锁的话那么会出现一个问题,每个线程都要等到另一个线程执行完才可以调用getInstance方法,所以我们采用了先判读的方法,每个线程都可以进行先判读,假如被实例化都返回实例没有则实例化,实例化部分要加上同步锁,以防其它线程一起实例化,如果一个线程实例化成功,其它线程便可获得getInstance对象
|