diff --git a/os/code/os/src/main/java/com/scaler/producerconsumer/Consumer.java b/os/code/os/src/main/java/com/scaler/producerconsumer/Consumer.java index fb07181..8fc0f05 100644 --- a/os/code/os/src/main/java/com/scaler/producerconsumer/Consumer.java +++ b/os/code/os/src/main/java/com/scaler/producerconsumer/Consumer.java @@ -24,10 +24,8 @@ public class Consumer implements Runnable { throw new RuntimeException("Error acquiring semaphore " + e); } - if (store.size() > 0) { - store.remove(); - System.out.println("Consumed: " + name + " Left units :" + store.size()); - } + store.remove(); + System.out.println("Consumed: " + name + " Left units :" + store.size()); forProducer.release(); diff --git a/os/code/os/src/main/java/com/scaler/producerconsumer/Producer.java b/os/code/os/src/main/java/com/scaler/producerconsumer/Producer.java index b438860..d2650ec 100644 --- a/os/code/os/src/main/java/com/scaler/producerconsumer/Producer.java +++ b/os/code/os/src/main/java/com/scaler/producerconsumer/Producer.java @@ -25,10 +25,8 @@ public class Producer implements Runnable { throw new RuntimeException("Error acquiring semaphore " + e); } - if (store.size() < maxSize) { - store.add(new UnitOfWork()); - System.out.println("Produced: " + name + " Left units :" + store.size()); - } + store.add(new UnitOfWork()); + System.out.println("Produced: " + name + " Left units :" + store.size()); forConsumer.release(); } diff --git a/os/code/os/src/main/java/com/scaler/producerconsumer/Runner.java b/os/code/os/src/main/java/com/scaler/producerconsumer/Runner.java index 75b5cb7..a9e5a81 100644 --- a/os/code/os/src/main/java/com/scaler/producerconsumer/Runner.java +++ b/os/code/os/src/main/java/com/scaler/producerconsumer/Runner.java @@ -1,8 +1,8 @@ package com.scaler.producerconsumer; -import java.util.ArrayDeque; import java.util.Queue; import java.util.Set; +import java.util.concurrent.ConcurrentLinkedDeque; import java.util.concurrent.Semaphore; import java.util.stream.Collectors; @@ -12,7 +12,7 @@ public class Runner { private static final Set consumerNames = Set.of("c1", "c2", "c3", "c4"); public static void main(String[] args) { - Queue store = new ArrayDeque<>(); + Queue store = new ConcurrentLinkedDeque<>(); int maxSize = 20; Semaphore forProducer = new Semaphore(maxSize);