Problem statement:
How do you write a program to implement producer-consumer problem using BlockingQueue?
How do you write a program to implement producer-consumer problem using BlockingQueue?
[1] Producer.java
import java.util.concurrent.BlockingQueue;
public class Producer implements Runnable {
BlockingQueue queue = null;
Producer(BlockingQueue queue) {
this.queue = queue;
}
@Override
public void run() {
for (int i = 1; i <= 12; i++) {
System.out.println("Produced item " + i);
try {
queue.put("item " + i);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
[2] Consumer.java
import java.util.concurrent.BlockingQueue;
public class Consumer implements Runnable {
BlockingQueue queue = null;
public Consumer(BlockingQueue queue) {
super();
this.queue = queue;
}
@Override
public void run() {
while (true) {
try {
System.out.println("Consumed " + queue.take());
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
[3] BlockingQueueExecution.java
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
public class BlockingQueueExecution {
public static void main(String args[]) {
BlockingQueue queue = new ArrayBlockingQueue(10); // here capacity= 10
Producer producer = new Producer(queue);
Consumer consumer = new Consumer(queue);
new Thread(producer).start();
new Thread(consumer).start();
}
}
Output:
Produced item 1
Consumed item 1
Produced item 2
Consumed item 2
Produced item 3
Consumed item 3
Produced item 4
Produced item 5
Consumed item 4
Produced item 6
Consumed item 5
Produced item 7
Consumed item 6
Produced item 8
Consumed item 7
Produced item 9
Consumed item 8
Produced item 10
Consumed item 9
Produced item 11
Consumed item 10
Produced item 12
Consumed item 11
Consumed item 12
No comments:
Post a Comment