并发下的单例模式的实现
这两个关键字很关键哦
下面我们来写一个实例:
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,这就是唯一的一个实例。
给出并发下多线程的解决方案。