import java.util.*;
import java.lang.*;
import java.io.*;
class Ideone {
long st, en;
for(int i = 1; i < 100000; i++){
Singleton s=Singleton.getInstance();
}
System.
out.
println("One:" + (en
- st
)/1000000.
d + " msc"); //------
for(int i = 1; i < 100000; i++){
Singleton2 s=Singleton2.getInstance();
}
System.
out.
println("Two:" + (en
- st
)/1000000.
d + " msc"); //------
SingletonBulder sb=new SingletonBulder();
Singleton s0=sb.getInstance();
for(int i = 1; i < 100000; i++){
Singleton s=sb.getInstance();
}
System.
out.
println("SB:" + (en
- st
)/1000000.
d + " msc"); }
}
class Singleton {
private static volatile Singleton instance;
public static Singleton getInstance() {
if (instance == null) {
synchronized (Singleton.class) {
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
}
class Singleton2 {
private static volatile Singleton2 instance2;
private static Singleton2 getInstance2() {
if (instance2 == null) {
synchronized(Singleton2.class) {
if (instance2 == null) {
instance2 = new Singleton2();
}
}
}
return instance2;
}
private static Singleton2 instance;
public static Singleton2 getInstance() {
if (instance == null) {
instance = getInstance2();
}
return instance;
}
}
class SingletonBulder {
private static Singleton instance;
private static SingletonBulder.SB sb;
public SingletonBulder(){
sb=new SB();
}
public Singleton getInstance() {
return sb.getInstance();
}
private class SB{
public Singleton getInstance() {
instance=Singleton.getInstance();
sb=new SB(){
public Singleton getInstance(){
return instance;
}
};
return instance;
}
}
}