public class Singleton {
private static final Singleton INSTANCE = new Singleton();
private Singleton(){};
public static Singleton getInstance()
{return INSTANCE;}
public void m(){
System.out.println("m");
}
public static void main(String[] args) {
Singleton m1 = Singleton.getInstance();
Singleton m2 = Singleton.getInstance();
System.out.println(m1==m2);
}
}
public class Singleton2 {
private static Singleton2 Instance;
private Singleton2() {
}
public static Singleton2 getInstance() {
try {
Thread.sleep(1000);
} catch (Exception e) {
e.printStackTrace();
}
if (Instance == null) {
Instance = new Singleton2();
}
return Instance;
}
public void m() {
System.out.println("m");
}
public static void main(String[] args) {
for (int i = 0; i < 100; i++) {
new Thread(() -> {
System.out.println(Singleton2.getInstance().hashCode());
}).start();
}
}
}
public class Singleton3 {
private static Singleton3 Instance;
private Singleton3() {
}
public static synchronized Singleton3 getInstance() {
try {
Thread.sleep(1);
} catch (Exception e) {
e.printStackTrace();
}
if (Instance == null) {
Instance = new Singleton3();
}
return Instance;
}
public void m() {
System.out.println("m");
}
public static void main(String[] args) {
for (int i = 0; i < 100; i++) {
new Thread(() -> {
System.out.println(Singleton3.getInstance().hashCode());
}).start();
}
}
}