public class ProducerConsumer { public static void main(String[] args) { DataItem item = new DataItem(0); Producer producer = new Producer(item); Consumer consumer = new Consumer(item); producer.start(); consumer.start(); } public static class DataItem { private int data; public DataItem(int num) {data = num;} public void put(int item) {data = item;} public int get() {return data;} } public static class Producer extends Thread { private DataItem item; public Producer(DataItem dataItem) {item = dataItem;} public void run() { for(int i = 0; i < 10; i++) { item.put(i); System.out.println("Producer: put: " + i); try {sleep((int) (Math.random() * 100));} catch(InterruptedException ie) {} } } } public static class Consumer extends Thread { private DataItem item; public Consumer(DataItem dataItem) {item = dataItem;} public void run() { int value; for(int i = 0; i < 10; i++) { value = item.get(); System.out.println("Consumer: got: " + value); try {sleep((int) (Math.random() * 100));} catch(InterruptedException ie) {} } } } }