Java并发编程入门 互动版

在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器

并发下的单例模式的实现

这两个关键字很关键哦

下面我们来写一个实例:

class A{
    private static volatile A instance;
    private static ReentrantLock lock=new ReentrantLock();
    private A(){
        System.out.println("Hello");
    }
    public static Singleton getInstance(){
        if(instance==null){
            synchronized (A.class){
                if(instance==null){
                    instance=new A();
                }
            }

        }
        return null;
    }
}

然后我们去使用多线程执行他:

public class Singleton  extends Thread{
    public void run(){
        super.run();
        System.out.println("MyThread");
        A.getInstance();
    }
    public static void main(String[] args){
        Singleton s1=new Singleton();
        Singleton s2=new Singleton();
        Singleton s3=new Singleton();
        s1.start();
        s2.start();
        s3.start();
    }
}

最后出现的结果就是在控制台只会输出一个hello,这就是唯一的一个实例。

给出并发下多线程的解决方案。