-1
private static boolean foundPassword = false;
As this is accessed by multiple threads, it should be volatile.
That said, though, your multithreading is really flawed, all of the threads just deadlock and 1 is allowed to do all the work.
First, multiple worker threads only work if you've got w...