The famous problem in multi threading is Producer Consumer Problem.
Producer Consumer Program in Java
import java.util.LinkedList;
class
Producer extends Thread {
LinkedList<Integer> list = null;
int limit = 0;
int elem = 0;
public Producer(LinkedList<Integer> list, int limit) {
this.list = list;
this.limit = limit;
}
public void run() {
try {
while(true) {
synchronized (list) {
while(list.size()==limit) {
System.out.println("Producer
Waiting ....");
list.wait();
}
list.add(++elem);
System.out.println("Produced
elememnt : "+elem);
list.notify();
}
Thread.sleep(1000);
}
}catch(InterruptedException e) {
System.out.println("Producer
run method exception : "+ e);
}
}
}
class
Consumer extends Thread {
LinkedList<Integer> list = null;
int limit = 0;
public Consumer(LinkedList<Integer> list, int limit) {
this.list = list;
this.limit = limit;
}
public void run() {
try {
while(true) {
synchronized (list) {
while(list.size()
== 0) {
System.out.println("Consumer
Waiting ....");
list.wait();
}
Integer removeFirst = list.removeFirst();
System.out.println("Consumed
element : "+removeFirst);
list.notify();
}
Thread.sleep(1000);
}
}catch(InterruptedException e) {
System.out.println("Consumer
Exception : "+e);
}
}
}
public class
ProducerConsumerProblem {
public static void
main(String[] args) {
LinkedList<Integer> list = new
LinkedList<>();
int limit = 5;
Producer producer = new
Producer(list, limit);
Consumer consumer = new
Consumer(list, limit);
producer.start();
consumer.start();
}
}
Output:
Produced elememnt : 1
Consumed element : 1
Consumer Waiting ....
Produced elememnt : 2
Consumed element : 2
Consumer Waiting ....
Produced elememnt : 3
Consumed element : 3
Produced elememnt : 4
Consumed element : 4
Produced elememnt : 5
Consumed element : 5
Produced elememnt : 6
Consumed element : 6
Consumer Waiting ....
Produced elememnt : 7
Consumed element : 7
Consumer Waiting ....
Produced elememnt : 8
Consumed element : 8
Consumer Waiting ....
Produced elememnt : 9
Consumed element : 9
Consumer Waiting ....
Produced elememnt : 10
Consumed element : 10
No comments:
Post a Comment