Program for producer consumer
package com.demo.demo;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
import java.util.stream.IntStream;
public class ProducerConsumerDemo {
public static void main(String[] args) {
BlockingQueue<String> blockingQueue = new ArrayBlockingQueue<>(2, true);
IntStream.range(0, 4).forEach(n -> {
Producer producer = new Producer(blockingQueue);
producer.start();
});
Consumer consumer = new Consumer(blockingQueue);
consumer.start();
}
}
class Consumer extends Thread {
private BlockingQueue<String> blockingQueue;
public Consumer(BlockingQueue<String> blockingQueue) {
this.blockingQueue = blockingQueue;
}
@Override
public void run() {
while (true) {
try {
String str = blockingQueue.take();
System.out.println("Consuming msg : " + str);
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
class Producer extends Thread {
private BlockingQueue<String> blockingQueue;
public Producer(BlockingQueue<String> blockingQueue) {
this.blockingQueue = blockingQueue;
}
@Override
public void run() {
int i = 0;
while (true) {
try {
String str = Thread.currentThread().getName() + i;
blockingQueue.put(str);
System.out.println("produce : " + str);
} catch (InterruptedException e) {
e.printStackTrace();
}
i = i + 1;
}
}
}
Comments
Post a Comment