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

Popular posts from this blog

Check if booleans are same

Program get max salary Female Employee in java8