Mi potete spiegare perché se uso il codice sottostante...

codice:
public class TokenRing {
		private static TokenRing singl = null;

		public synchronized static TokenRing getInstance(int port) {
			if (singl==null)
				{singl = new TokenRing(port);
				System.out.println("token instanziato");}
			return singl;
		}

		private TokenRing(int port) {
			
		}

	}
... e chiamo 2 volte getInstance mi stampa a video due volte "token instanziato" ???
Grazie mille