2009. 1. 5. 21:57

Single Thread Execution/ Double-Checked Locking/ Initialization On Demand Holder 패턴

public class MySystem{
private static MySystem instance = null;
private Date date = new Date();
private MySystem(){
}

public Date getDate(){
return date;
}

public static synchronized MySystem getInstance(){
if(instance == null){
instance = new MySystem();
}

return instance;
}
}

public class MySystem{
private static MySystem instance = null;
private Date date = new Date();
private Mysystem(){
}

public Date getDate(){
return date;
}

public static MySystem getInstance(){
if(instance == null){
synchronized (MySyste.class){
if(instance == null){
instance = new MySystem();
}
}
}
}
}

public class MySystem{
private static class Holder{
public static MySystem instance = new Mysystem();
}

private Date date = new Date();

private MySystem(){
}

public Date getDate(){
return date;
}

public static Mysystem getInstance(){
return Holder.instance;
}
}