哪位大虾帮我分析一下这两种单例模式哪一种比较好public class Singleton {private static volatile Singleton instance = null;// private constructor suppressesprivate Singleton(){}public static Singleton getInstance() {// if already
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/27 11:27:05
![哪位大虾帮我分析一下这两种单例模式哪一种比较好public class Singleton {private static volatile Singleton instance = null;// private constructor suppressesprivate Singleton(){}public static Singleton getInstance() {// if already](/uploads/image/z/12685352-32-2.jpg?t=%E5%93%AA%E4%BD%8D%E5%A4%A7%E8%99%BE%E5%B8%AE%E6%88%91%E5%88%86%E6%9E%90%E4%B8%80%E4%B8%8B%E8%BF%99%E4%B8%A4%E7%A7%8D%E5%8D%95%E4%BE%8B%E6%A8%A1%E5%BC%8F%E5%93%AA%E4%B8%80%E7%A7%8D%E6%AF%94%E8%BE%83%E5%A5%BDpublic+class+Singleton+%7Bprivate+static+volatile+Singleton+instance+%3D+null%3B%2F%2F+private+constructor+suppressesprivate+Singleton%28%29%7B%7Dpublic+static+Singleton+getInstance%28%29+%7B%2F%2F+if+already)
哪位大虾帮我分析一下这两种单例模式哪一种比较好public class Singleton {private static volatile Singleton instance = null;// private constructor suppressesprivate Singleton(){}public static Singleton getInstance() {// if already
哪位大虾帮我分析一下这两种单例模式哪一种比较好
public class Singleton {
private static volatile Singleton instance = null;
// private constructor suppresses
private Singleton(){
}
public static Singleton getInstance() {
// if already inited,no need to get lock everytime
if (instance == null) {
synchronized (Singleton.class) {
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
}
public class Singleton {
private static volatile Singleton instance = new Singleton();
public static Singleton getInstance() {
return instance;
}
}
哪位大虾帮我分析一下这两种单例模式哪一种比较好public class Singleton {private static volatile Singleton instance = null;// private constructor suppressesprivate Singleton(){}public static Singleton getInstance() {// if already
第一种:懒汉式单例模式
第二种:饿汉式单例模式
第一种好呗,第一种线程安全,多线程并发的访问这个getInstance() 时,比如线程A和B同时执行到了Synchronized(singleton.class),只有其中一个线程能获得锁,比如是A获得了锁,执行完毕后,由B获得同步锁,再检查一下singleton是否为空,为空就继续执行,这一步是为了避免出现两个singleton实例的情况,这叫双重检查模式(DCL),第二种没啥说的了,一个多线程访问,就混乱了.