import java.util.Random; // Class for thread producing successive integers for buffer class ProduceInteger extends Thread{ private static final int TOTAL_TO_WRITE = 6; // number of ints to write private static final int DEFAULT_SLEEP_TIME = 500; // time to sleep protected HoldInteger circBuffer; // Circular buffer protected int sleepTime; // How long to sleep before producing next int private int base; // Hook up circular buffer public ProduceInteger(String name, int base, HoldInteger holder,int delayTime) { super(name); circBuffer = holder; sleepTime = delayTime; this.base = base; } // Hook up circular buffer w/ default sleepTime public ProduceInteger(String name, int base, HoldInteger holder) { this(name,base,holder,DEFAULT_SLEEP_TIME); } // Produce integers and store in buffer public void run() { Random generator = new Random(); for (int count = 0; count < TOTAL_TO_WRITE; count++) { circBuffer.setSharedInt(base + count); // sleep for random interval try{ sleep((int)(generator.nextInt(sleepTime))); } catch (InterruptedException ie) { System.out.println("Exception "+ie.toString()); } } } }