Problem Statement:
.Develop a multithreaded application that implements producer consumer problem.
Input and Output Requirements:
The program will display the value written by the producer and read by the consumer.
Algorithm:
Begin
Create two classes which implement Runnable interface.
Implement the run() method in producer and consumer threads.
Define another class and instantiate objects of the classes which implemented Runnable interface.
Create thread object and call start() method.
End
Program:
class item { int q; boolean value = false; synchronized void put(int p) { if(value) { try{ wait(); } catch(InterruptedException e){ } } this.q = p; System.out.println("Producer produced : "+ q); value = true; notify(); } synchronized int get() { if(!value) { try{ wait(); } catch(InterruptedException e){ } } System.out.println("Consumer consumed : "+ q); value = false; notify(); return q; } } class producer implements Runnable { int i = 1; item I; producer(item I) { this.I = I; Thread th = new Thread(this,"Producer"); th.start(); System.out.println(th.getName() + " Started Executing"); } public void run() { while(i < 21) { I.put(i); i++; try { Thread.sleep(500); } catch(InterruptedException e){} } } } class consumer implements Runnable { int i = 1; item I; Thread th; consumer(item I) { this.I = I; th = new Thread(this,"Consumer"); th.start(); System.out.println(th.getName() + " Started Executing"); } public void run() { while(i < 21) { I.get(); i++; try { Thread.sleep(500); } catch(InterruptedException e){} } } } class pro_con { public static void main(String args[]) { item I = new item(); new producer(I); new consumer(I); } } |
Output:
Producer Started Executing
Producer produced : 1
Consumer Started Executing
Consumer consumed : 1
Producer produced : 2
Consumer consumed : 2
Producer produced : 3
Consumer consumed : 3
Producer produced : 4
Consumer consumed : 4
Producer produced : 5
Consumer consumed : 5
Producer produced : 6
Consumer consumed : 6
Producer produced : 7
Consumer consumed : 7
Producer produced : 8
Consumer consumed : 8
Producer produced : 9
Consumer consumed : 9
Producer produced : 10
Consumer consumed : 10
Producer produced : 11
Consumer consumed : 11
Producer produced : 12
Consumer consumed : 12
Producer produced : 13
Consumer consumed : 13
Producer produced : 14
Consumer consumed : 14
Producer produced : 15
Consumer consumed : 15
Producer produced : 16
Consumer consumed : 16
Producer produced : 17
Consumer consumed : 17
Producer produced : 18
Consumer consumed : 18
Producer produced : 19
Consumer consumed : 19
Producer produced : 20
Consumer consumed : 20
Leave a Reply