package listen; import java.util.ArrayList; import java.util.List; import java.util.Random; public class Generator { private List listeners; public Generator() { this.listeners = new ArrayList(); } public void addListener(Listener listener) { this.listeners.add(listener); } public void run() { Random random = new Random(); final int MEAN_DELAY = 2000; final int SD_DELAY = 1000; final int MAX_VALUE = 9; final int STOP = 5; boolean done = false; while (!done) { int delay = MEAN_DELAY + (int) (SD_DELAY * random.nextGaussian()); try { Thread.sleep(delay); } catch (InterruptedException e) { // do nothing } int value = random.nextInt(MAX_VALUE + 1); for (Listener listener : this.listeners) { listener.process(); listener.process(value); } done = random.nextInt(STOP) == 0; } for (Listener listener : this.listeners) { listener.stop(); } } }