A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Curvat 中级黑马   /  2016-6-1 10:29  /  526 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Curvat 于 2016-6-1 10:54 编辑

第一种(懒汉,线程不安全)public class Singleton {
    private static Singleton instance;
    private Singleton (){}
    public static Singleton getInstance() {
        if(instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}
第二种(懒汉,线程安全)
pulic class Singleton {
    private static Singleton instance;
    private Singleton () {}
    public static synchronized Singleton getInstace() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}
第三种(饿汉)
public class Singleton {
    private static Singleton instance = new Singleton();
    private Singleton (){}
    public static Singleton getInstance() {
        return instance;
    }
第四种(饿汉,变种)
public class Singleton {
    private Singleton instance = null;
    static {
        instance = new Singleton();
    }
    private Singleton () {};
    public static Singleton getInstance() {
        return this.instance;
    }
}
第五种(静态内部类)
public class Singleton {
    private static class SingletonHolder {
        private static final Singleton INSTANCE = null;
    }
    private Singleton (){}
    public static final Singleton getInstance() {
        return SingletonHolder.INSTANCE;
    }
}
第六种(枚举)
public enum Singleton {
    INSTANCE;
    public void whateverMethod() {
    }
}
第七中(双重校验锁)
public class Singleton {
    private volatile static Singleton singleton;
    private Singleton (){}
    public static Singleton getSingleton() {
        if(singleton == null) {
            synchronized (Singleton.class) {
                if(singleton == null) {
                    singleton = new Singleton();
               }
            }
        }
        return singleton;
    }
}

2 个回复

倒序浏览
本帖最后由 Curvat 于 2016-6-1 10:51 编辑

第一种(懒汉,线程不安全)
public class Singleton {   
    private static Singleton instance;
    private Singleton (){}    public static Singleton getInstance() {
        if(instance == null) {
            instance = new Singleton();
        }
        return instance;    }
}
第二种(懒汉,线程安全)
pulic class Singleton {
    private static Singleton instance;
    private Singleton () {}
    public static synchronized Singleton getInstace() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}
第三种(饿汉)
public class Singleton {
    private static Singleton instance = new Singleton();
    private Singleton (){}
    public static Singleton getInstance() {
        return instance;
    }
}第四种(饿汉,变种)
public class Singleton {   
private Singleton instance = null;
    static {
        instance = new Singleton();
    }   
private Singleton () {};   
public static Singleton getInstance() {
        return this.instance;
    }
}
第五种(静态内部类)
public class Singleton {
    private static class SingletonHolder {
        private static final Singleton INSTANCE = null;
    }
    private Singleton (){}
    public static final Singleton getInstance() {
        return SingletonHolder.INSTANCE;
    }
}
第六种(枚举)
public enum Singleton {
    INSTANCE;    public void whateverMethod() {
    }
}
第七中(双重校验锁)
public class Singleton {
    private volatile static Singleton singleton;
    private Singleton (){}
    public static Singleton getSingleton() {
        if(singleton == null) {
            synchronized (Singleton.class) {
                if(singleton == null) {
                    singleton = new Singleton();
                }
            }
        }
        return singleton;
    }
}
回复 使用道具 举报
这么乱 有啥用
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马