Import Java.util.Queue;
Import java.util.LinkedList;
public class Producerconsumerdemo {
public static void Main (string[] args) {
Myqueue q = new Myqueue ();
Producer p = new Producer (q);
Consumer C = new Consumer (q);
P.start ();
C.start ();
}
}
Class Producer extends Thread {
Myqueue q = new Myqueue ();
Producer (Myqueue q) {
THIS.Q = q;
}
public void Run () {
int i = 0;
while (true) {
Q.push (i);
try {
Notify ();
} catch (Exception e) {}
System.out.println ("Producer:" + i);
i++;
}
}
}
Class Consumer extends Thread {
Myqueue q = new Myqueue ();
Consumer (Myqueue q) {
THIS.Q = q;
}
public void Run () {
while (true) {
if (q.size () > 0) {
System.out.println ("Consumer:" + q.pop ());
} else {
try {
Wait ();
} catch (Exception e) {}
}
}
}
}
Class Myqueue {
Queue queue = new LinkedList ();
synchronized void push (Object obj) {
Queue.offer (obj);
}
Synchronized Object pop () {
return Queue.poll ();
}
Long Size () {
return Queue.size ();
}
}
Java Producer Consumer instances