package com.cy.SingtonInstance;
import sun.security.jca.GetInstance;
public class DCLSingletonInstanceDemo {
private static volatile DCLSingletonInstanceDemo instance = null;
private DCLSingletonInstanceDemo() {
System.out.println("constructor method....");
}
//DCL(double check lock机制)
public static DCLSingletonInstanceDemo getInstance() {
if (instance == null) {
synchronized (DCLSingletonInstanceDemo.class) {
if (instance == null) {
instance = new DCLSingletonInstanceDemo();
}
}
}
return instance;
}
public static void main(String[] args) {
for (int i = 1; i <= 10; i++) {
new Thread(() -> {
DCLSingletonInstanceDemo.getInstance();
}, String.valueOf(i)).start();
}
}
}