Thread Java Tutorial

import java.util.Iterator;
import java.util.Vector;
public class Main {
  public static void main(String[] args) throws Exception {
    Vector data = new Vector();
    new Producer(data).start();
    new Consumer(data).start();
  }
}
class Producer extends Thread {
  Vector data;
  Producer(Vector data) {
    super("Producer");
    this.data = data;
  }
  public void run() {
    while (true) {
      data.addElement(new Object());
      if (data.size() > 1000)
        data.removeAllElements();
    }
  }
}
class Consumer extends Thread {
  Vector data;
  Consumer(Vector data) {
    super("Consumer");
    this.data = data;
  }
  public void run() {
    while (true) {
      synchronized (data) {
        Iterator it = data.iterator();
        while (it.hasNext())
          it.next();
      }
    }
  }
}