看了张老师的视频,关于单例模式这块,有些不是明白。
第一种是:饿汉模式
public class SingleClass {
private static SingleClass single = new SingleClass();
private SingleClass(){}
public static SingleClass getInstance(){
return single;
}
}
第二种是:懒汉模式
public class SingleClass {
private static SingleClass single = null;
private SingleClass(){}
public static SingleClass getInstance(){
if(single==null){
synchronized (single) {
if(single==null)
single = new SingleClass();
}
}
return single;
}
}
然后我想了下,下面这种方式对不对呢?大家帮忙分析下。
public class SingleClass {
private static SingleClass single = null;
static {
single =new SingleClass();
}
private SingleClass(){}
public SingleClass getInstance(){
return single;
}
}
第三种方式能不能叫单例呢?第二种懒汉模式在不进行加锁和判空的情况下,可能在多线程中出现问题,但是第三种直接静态加载,多线程中会出现问题么?
|