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 }