è possibile forzare un'eccezione di timeout se il programma resta bloccato per un tempo superiore a x dentro un try?

Io in pratica devo fare una connessione ad active directory tramite ldap, uso questo codice:

codice:
try {
	  ctx = new InitialLdapContext(env, connCtls);
	  System.out.println("connesso a:"+ldapurl);
	  cont=false;
	  
	}
	catch (Exception e) {
	  System.out.println("Exception " + e);
	}

try {
	ctx.addToEnvironment(Context.SECURITY_PRINCIPAL, username);
	ctx.addToEnvironment(Context.SECURITY_CREDENTIALS, Password);
	ctx.reconnect(connCtls);
	System.out.println(username+ " is authenticated");	
      }

      catch (AuthenticationException e) {
	System.out.println(webUser.getUsername() + " is not authenticated");
}
in pratica il primo try/catch mi verifica se il server ldap è raggiungibile, il secondo fa l'autenticazione.
Il problema è che se manca il collegamento di rete nel primo try il programma resta in attesa un pò prima di lanciare eccezione. E' possibile creare qualcosa, non so un thread parallelo, che mi lancia un'eccezione se resto troppo dentro al try?