Code example for CountDownLatch

Methods: await, getCount

0
	 * Indica si este proceso ya fue inicializado y sus variables son consistente 
	 *  
	 * @return true si acceder a sus variables desde otros threads no provoca espera 
	 */ 
	public boolean isInitialized() { 
		return barreraInicializacion.getCount() == 0;
	} 
 
	/** 
	 * Devuelve el handler que el proceso ofrece para agregar tareas a la cola de este proceso.<br> 
	 * Las tareas agregadas serán procesadas una por una, a menos que se detenga la ejecución, en 
	 * cuyo caso pueden quedar tareas pendientes 
	 *  
	 * @return El handler para el encolado de tareas 
	 */ 
	public Handler getProcessHandler() {
		if (!started.get()) {
			throw new RuntimeException("No se puede obtener el handler si nunca se inicio el thread");
		} 
		if (!isInitialized()) { 
			// Tenemos que esperar que se cree el handler 
			waitProcessInitialization(); 
		} 
		return propioHandler;
	} 
 
	/** 
	 * Este método permite a threads externos esperar hasta que este proceso se inicialice y tenga 
	 * un estado consistente.<br> 
	 * Este método falla si en el tiempo de espera no se logró inicializar.<br> 
	 * Si termina normalmente es seguro acceder a las variables de instancia de este proceso 
	 */ 
	private void waitProcessInitialization() { 
		try { 
			boolean consiguioHandler = barreraInicializacion.await(HANDLER_OPENING_TIMEOUT,
					HANDLER_OPENING_TIMEOUT_UNIT);
			if (!consiguioHandler) {
				throw new RuntimeException("No se pudo crear un handler para el hilo " + this.getClass());
			} 
		} catch (InterruptedException e) {