public void run(){
		this.readyLatch.countDown();
		try{
			this.startLatch.await();
			String attempt;

			while(this.crackedPassword[0].length() == 0){
				attempt = this.toString();

				if(!increment())		
					break;
				
				else if (this.crackExecutor.crack(attempt))
					this.crackedPassword[0] = attempt;
				
				this.crackExecutor.reset();
			}

		} catch (Exception e){
			e.printStackTrace();
			Thread.currentThread().interrupt();
		} finally{
			this.doneLatch.countDown();
			this.exec.shutdown();
		}
	}