The Java Program: Reactive.java
1 import java.util.LinkedList;
2
3 interface Action {
4 void doit ();
5 }
6
7 class Process implements Runnable {
8 private LinkedList<Action> listeners = new LinkedList<Action> ();
9 private void alert () {
10 for (Action a: listeners) a.doit();
11 }
12 public void addListener (Action a) {
13 listeners.add (a);
14 }
15 public void run () {
16 for (int i=0;i<5;i++) {
17
18 alert ();
19 }
20 }
21 }
22
23 class Reactive {
24 public static void main (String [] args) {
25 final Process p = new Process ();
26 new Thread (p).start();
27 class A implements Action {
28 public void doit () { System.out.println ("Alerted!");};
29 }
30 p.addListener (new A ());
31 class B implements Action {
32 public void doit () { System.out.println ("Me too!");};
33 }
34 p.addListener (new B ());
35 }
36 }
37