Producer & Consumer Problem
public class ProducerConsumerTest {
public static void main(String[] args) {
A a1 = new A();
Producer p1 = new Producer(a1, 1);
Consumer c1 = new Consumer(a1, 1);
p1.start();
c1.start();
}
}
class A
private int contents;
private boolean available = false;
public synchronized int get() {
while (available == false) {
try {
wait();
} catch (InterruptedException e) {}
}
available = false;
notifyAll();
return contents;
}
public synchronized void put(int value) {
while (available == true) {
try {
wait();
} catch (InterruptedException e) { }
}
contents = value;
available = true;
notifyAll();
}
}
class Consumer extends Thread {
private A a1;
private int number;
public Consumer(A a, int number) {
a1= a;
this.number = number;
}
public void run() {
int value = 0;
for (int i = 0; i < 10; i++) {
value = a1.get();
System.out.println("Consumer #" + this.number + " got: " + value);
}
}
}
class Producer extends Thread {
private A a1;
private int number;
public Producer(A a, int number) {
a1 = a;
this.number = number;
}
public void run() {
for (int i = 0; i < 10; i++) {
a1.put(i);
System.out.println("Producer #" + this.number + " put: " + i);
try {
sleep(1000);//((int)(Math.random() * 100));
} catch (InterruptedException e) { }
}
}
}
0 Comments:
Post a Comment
Subscribe to Post Comments [Atom]
<< Home