Java Concurrency Utilities : Custom Implementation
Blocking Queue
Before implementing , one must know what BlockingQueue is : Java BlockingQueue interface in the java.util.concurrent package represents a queue which is thread safe to put into, and take instances from. BlockingQueue is typically used to have on thread produce objects, which another thread consumes.
Implementation :
To implement the blocking queue we have created a queue in which elements will be added and taken out. We have created two enque and deque .In enque() method is used for producing and dequed for consuming. In enqueue method using the while() loop and condition we wait untill the queue is full and in the dequeu method we wait untill the queue is empty. Once any element is added in the queue, consumer thread consumer notify() to other thread.
Before implementing , one must know what BlockingQueue is : Java BlockingQueue interface in the java.util.concurrent package represents a queue which is thread safe to put into, and take instances from. BlockingQueue is typically used to have on thread produce objects, which another thread consumes.
Implementation :
public class CustomBlockingQueue { private List queue = new LinkedList(); private int limit = 10; public CustomBlockingQueue(int limit){ this.limit = limit; } public synchronized void enqueue(Object item) throws InterruptedException { while(this.queue.size() == this.limit) { wait(); } notifyAll(); this.queue.add(item); } public synchronized Object dequeue() throws InterruptedException{ while(this.queue.size() == 0){ wait(); } notifyAll(); return this.queue.remove(0); } }
Explanation :
To implement the blocking queue we have created a queue in which elements will be added and taken out. We have created two enque and deque .In enque() method is used for producing and dequed for consuming. In enqueue method using the while() loop and condition we wait untill the queue is full and in the dequeu method we wait untill the queue is empty. Once any element is added in the queue, consumer thread consumer notify() to other thread.
Comments
Post a Comment