Aşağıda Singleton tasarımını kullanan bir örnek görülmektedir :
public class Test {
private static Test instance=null; private Test() {} public static Test getInstance(){ if(instance==null){ synchronized (Test.class) { if(instance==null){ instance=new Test(); } } } return instance; } }
getInstance metodu synchronized yapılarak thread-safe olması sağlanabilir. Ancak bu performansı düşürecektir. Bir altarnatif yöntem yukarıdaki gibi yapmaktır. instance'ın null olup olmadığı anlaşılana kadar synchronized yapılmamaktadır. instance'ın null olduğu anlaşılınca sınıf synchronized haline getirilmekte ve Test nesnesinin yaratılması beklenmektedir. synchronized blok içinde de bir null kontrolü koyulmuştur. Bu şekilde ikinci bir nesnenin yaratılması engellenmiştir