@Override public void run() { Random randomGenerator = new Random(); while (true) { int pause; try { pause = randomGenerator.nextInt(500); Thread.sleep(pause); } catch (InterruptedException ex) { System.out.println("consumer " + name + " failed to wait"); } try { String stand = p.read(); System.out.println(name + " getting " + stand); pause = randomGenerator.nextInt(500); Thread.sleep(pause); p.leave(stand); } catch (InterruptedException ex) { Logger.getLogger(Visitor.class.getName()).log(Level.SEVERE, null, ex); } } }