| 
  /*
 * Output:
 *
 * Got: 0
 * Got: 0
 * Got: 0
 * ...
 */
 
 class Queue {
 int n;
 synchronized int get() {
 System.out.println("Got: " + n);
 return n;
 }
 synchronized void put(int n) {
 this.n = n;
 System.out.println("Put: " + n);
 }
 }
 class Consumer implements Runnable {
 Queue q;
 Consumer(Queue q) {
 this.q = q;
 new Thread(this, "Consumer").start();
 }
 public void run() {
 while(true) {
 q.get();
 }
 }
 }
 public class MainClass {
 public static void main(String args[]) {
 Queue q = new Queue();
 new Consumer(q);
 }
 }
 
 
 
 
 
 
 |