转自: https://blog.csdn.net/zhangerqing/article/details/8194653在1
package com.zjxt.demo.pojo;
public class SingletonSync3 {
private static SingletonSync3 instance=null;
private SingletonSync3(){}
private static synchronized void initSingleton(){
if (instance==null){
instance=new SingletonSync3();
}
}
public static SingletonSync3 getInstance(){
if (instance==null){
initSingleton();
}
return instance;
}
}
在多线程情况下创建对象,对象的地址值是一样的,多次验证结果也是一致。
package com.zjxt.demo.test;
import com.zjxt.demo.pojo.SingletonSync3;
public class Test1 {
public static void main(String[] args) {
for (int i=0;i<10;i++){
new Thread(new Runnable() {
@Override
public void run() {
SingletonSync3 instance = SingletonSync3.getInstance();
System.out.println(Thread.currentThread().getName()+"--"+instance);
}
}).start();
}
}
}