单例设计模式(懒汉式和饿汉式)

懒汉式

注意:懒汉式存在线程安全问题,可以用如下方法解决

class Singer{
    private Singer{    //私有化构造器
       }
    private static Singer s;//私有静态属性
    public static Singer getInstance(){
        if(s==null){
        synchronized(Singer.class){//加锁,为了线程安全
               if(s==null){
                  s=new Singer();
        }
    }
    return s;
}

饿汉式

class Singer{
    private Singer(){
        }
    private static Singer s=new Singer();;
    public static Singer getInstance(){
        return s;
    }
}

 

你可能感兴趣的:(Java)