PROGRAM NO:- 13
AIM:- Write a program to implement producer consumer problem in java using
thread.
SOURCE CODE:-
import [Link];
public class synch {
public static void main(String[] args) {
int n;
[Link]("Enter the production limit");
Scanner sc=new Scanner([Link]);
n=[Link]();
[Link]("The production limit is "+n);
Q q = new Q();
new Producer(q,n);
new Consumer(q,n);}}
class Q {
int n;
boolean signal = false;
synchronized int consume() {
while(!signal)
try {
[Link]("Consumer thread sleeps");
wait();
} catch(InterruptedException e) {
[Link]("InterruptedException caught");}
[Link]("Consumer thread awakes");
[Link]("Consumed: " + n);
signal = false;
notify();
return n;}
NAMIT GUPTA,
IT-A,
163
synchronized void produce(int n) {
while(signal)
try {
[Link]("Producer thread sleeps");
wait();
} catch(InterruptedException e) {
[Link]("InterruptedException caught");}
this.n = n;
[Link]("Producer thread awakes");
signal = true;
[Link]("Produced: " + n);
notify();}}
class Producer implements Runnable {
Q q;
int n;
Producer(Q q,int n) {
this.n=n;
this.q = q;
new Thread(this, "Producer").start();}
public void run() {
[Link]("Producer thread created");
int i = 0;
while(i<n) {
[Link](++i);}
[Link]("Producer thread sleeps");}}
class Consumer implements Runnable {
Q q;
int n;
Consumer(Q q,int n) {
this.q = q;
NAMIT GUPTA,
IT-A,
163
this.n=n;
new Thread(this, "Consumer").start();}
public void run() {
[Link]("Consumer thread created");
while(true) {
[Link]();}}}
NAMIT GUPTA,
IT-A,
163
OUTPUT:-
NAMIT GUPTA,
IT-A,
163