From 3342281a25b97e84cf010a9827d6d643db3d613e Mon Sep 17 00:00:00 2001 From: kastashenkova Date: Mon, 16 Mar 2026 23:52:48 +0200 Subject: [PATCH] realize BlockingQueue --- .../java/core/basesyntax/BlockingQueue.java | 21 ++++++++++++------- .../java/core/basesyntax/thread/Consumer.java | 2 +- .../java/core/basesyntax/thread/Producer.java | 2 +- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/main/java/core/basesyntax/BlockingQueue.java b/src/main/java/core/basesyntax/BlockingQueue.java index 77a20440..7ebfcb5e 100644 --- a/src/main/java/core/basesyntax/BlockingQueue.java +++ b/src/main/java/core/basesyntax/BlockingQueue.java @@ -4,24 +4,31 @@ import java.util.Queue; public class BlockingQueue { - private Queue queue = new LinkedList<>(); - private int capacity; + private final Queue queue = new LinkedList<>(); + private final int capacity; public BlockingQueue(int capacity) { this.capacity = capacity; } public synchronized void put(T element) throws InterruptedException { - // write your code here + while (queue.size() == capacity) { + wait(); + } + queue.add(element); + notifyAll(); } public synchronized T take() throws InterruptedException { - // write your code here - return null; + while (queue.isEmpty()) { + wait(); + } + T element = queue.poll(); + notifyAll(); + return element; } public synchronized boolean isEmpty() { - // write your code here - return true; + return queue.isEmpty(); } } diff --git a/src/main/java/core/basesyntax/thread/Consumer.java b/src/main/java/core/basesyntax/thread/Consumer.java index a28994fa..932abe3a 100644 --- a/src/main/java/core/basesyntax/thread/Consumer.java +++ b/src/main/java/core/basesyntax/thread/Consumer.java @@ -3,7 +3,7 @@ import core.basesyntax.BlockingQueue; public class Consumer implements Runnable { - private BlockingQueue blockingQueue; + private final BlockingQueue blockingQueue; public Consumer(BlockingQueue blockingQueue) { this.blockingQueue = blockingQueue; diff --git a/src/main/java/core/basesyntax/thread/Producer.java b/src/main/java/core/basesyntax/thread/Producer.java index a08376ce..45fe07ce 100644 --- a/src/main/java/core/basesyntax/thread/Producer.java +++ b/src/main/java/core/basesyntax/thread/Producer.java @@ -3,7 +3,7 @@ import core.basesyntax.BlockingQueue; public class Producer implements Runnable { - private BlockingQueue blockingQueue; + private final BlockingQueue blockingQueue; public Producer(BlockingQueue blockingQueue) { this.blockingQueue = blockingQueue;