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;
}
}