The Java Program: PC.java
1 class Q {
2 int n;
3 synchronized int get() {
4 System.out.println("Got: " + n);
5 return n;
6 }
7 synchronized void put(int n) {
8 this.n = n;
9 System.out.println("Put: " + n);
10 }
11 }
12 class Producer implements Runnable {
13 Q q;
14 Producer(Q q) {
15 this.q = q;
16 new Thread(this, "Producer").start();
17 }
18 public void run() {
19 int i = 0;
20 while(true) {
21 q.put(i++);
22 }
23 }
24 }
25 class Consumer implements Runnable {
26 Q q;
27 Consumer(Q q) {
28 this.q = q;
29 new Thread(this, "Consumer").start();
30 }
31 public void run() {
32 while(true) {
33 q.get();
34 }
35 }
36 }
37 class PC {
38 public static void main(String args[]) {
39 Q q = new Q();
40 new Producer(q);
41 new Consumer(q);
42 }
43 }