高并发下单例线程安全

1.使用静态内置类实现单例模式

自定义线程池

2.使用static代码块实现单例

3.使用静态内置类实现单例模式

4.使用static代码块实现单例

public class MySingleton {

    //使用volatile关键字保其可见性
    volatile private static MySingleton instance = null;

    private MySingleton(){}

    public static MySingleton getInstance() {
        try {  
            if(instance != null){//懒汉式 

            }else{
                //创建实例之前可能会有一些准备性的耗时工作 
                Thread.sleep(300);
                synchronized (MySingleton.class) {
                    if(instance == null){//二次检查
                        instance = new MySingleton();
                    }
                }
            } 
        } catch (InterruptedException e) { 
            e.printStackTrace();
        }
        return instance;
    }
}

思路可以沿用到rabbitmq重连上

你可能感兴趣的:(java)