1.这样写会出现空指针问题。。是因为加载时instance为空?synchronized不能锁null?
2.上网查了一下,然后改成了锁ConnFactory.class,是什么意思?给类文件加锁?
    
    private static ConnFactory instance;
    
    private ConnFactory(){}
    
    public static ConnFactory newInstance(){
        if(instance==null){
            synchronized(instance){
                if(instance == null)
                    instance = new ConnFactory();
            }
        }
        return instance;
        
    }

解决方案 »

  1.   

    你这个不叫懒汉式,而是双检锁的Lazy Loading Singleton模式。
    这个办法在Java5之前是肯定不好使的。
    所谓的懒汉式,可以利用内部static类来实现。
      

  2.   

    synchronized(instance){只有对象才有一把隐式的对象锁,null 是不存在那锁的,所以就报空指针异常了。
      

  3.   

    怎么java1.6之后,双检锁的懒汉式单例模式不会存在不可预期后果的问题吗?
    如何实现?
      

  4.   

    线程问题。
    instance = new ConnFactory();
    对于这么一条语句,有两个执行步骤。
    1.为instance分配空间。
    2.调用ConnFactory的构造函数初始化状态。
    如果有线程A和B几乎在同一时刻同时调用newInstance方法,假设A先进入。
    如果A线程刚为instance开辟了空间,即步骤A,cpu就切换去执行B线程的任务了,这时候B线程发现instance已经不是null,于是它边把instance拿来用,这时候就可能出问题了。因为instance实例的状态还没有初始化。
      

  5.   

    private static ConnFactory instance;   
        private ConnFactory(){}   
        public synchronized static ConnFactory newInstance(){
            if(instance==null){
             instance = new ConnFactory();
            }
            return instance;        
        }
    这个?
      

  6.   


    锁方法每次都要请求锁,然后判断是否为空我想知道锁类名.class是什么意思???
      

  7.   

    有道理
    锁class
    public static ConnFactory newInstance(){
            if(instance==null){
                synchronized(ConnFactory){
                    if(instance == null)
                        instance = new ConnFactory();
                }
            }
            return instance;
            
        }