public class SafeLazyInitialization
{
private static Resource
resource;
public synchronized static Resource
getInstance () {
if (resource
== null )
resource
= new Resource();
return resource;
}
}
public class EagerInitialization
{
private static Resource
resource = new Resource();
public static Resource
getResource () { return resource;
}
}
public class ResourceFactory
{
private static class ResourceHolder
{
public static Resource
resource = new Resource();
}
public static Resource
getResource () {
return ResourceHolder.resource
;
}
}
public class SingletonDemo
{
private static volatile SingletonDemo instance = null ;
private SingletonDemo () { }
public static SingletonDemo
getInstance () {
if (instance == null )
{
synchronized (SingletonDemo
.class){
if (instance
== null )
{
instance
= new SingletonDemo
();
}
}
}
return instance;
}
}