public ParkingPlace getParkingPlace(long maxWaitMillis)
			throws ParkingException {
		try {
			if (SEMAPHORE.tryAcquire(maxWaitMillis, TimeUnit.MILLISECONDS)) {
				return pollParkingPlace();
			}
		} catch (InterruptedException e) {
			throw new ParkingException(e);
		}
		throw new ParkingException("Timeout");
	}