import java.util.Queue; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.ReentrantLock; public class Consumer extends Thread { ReentrantLock lock; Condition con; Queue queue; public Consumer (ReentrantLock lock, Condition con, Queue queue) { this.lock = lock;this.con = con; this.queue = queue; } @Override public void run () { for (int i = 0;i<10;i++) { lock.lock(); while (queue.size()<1){ try { con.await(); } catch (InterruptedException ex) { ex.printStackTrace(); } } System.out.println("Consumed : " + queue.remove()); con.signal(); lock.unlock(); } } }