参考链接:https://blog.csdn.net/LuuvyJune/article/details/85706182
1.饿汉模式----创建了之后没用
2.懒汉模式—线程不安全
3.同步+懒汉----线程阻塞
4.Double–Check—包括connection和socket对象
如果instance为空,则进入到锁机制,再重新判断一下instance是否为空,为空则新建对象
/**
* Double-Check
* 高效的数据同步策略,首次初始化时加锁,之后允许多个线程同时进行getInstance调用来获得实例
*/
public final class Singleton {
//定义实例,不初始化
private static Singleton instance = null;
Connection conn;
Socket socket;
//私有构造函数,不允许外部new
private Singleton(){
this.conn;//初始化conn
this.socket;//初始化socket
}
public static Singleton getInstance(){
//当instance为null时,进入同步代码块,同时可避免了每次都需要进入同步代码块,可提高效率
if(null == instance) {
synchronized (Singleton.class){
//判断如果instance为null时创建
if(null == instance){
instance = new Singleton();
}
}
}
return instance;
}
}