import java.util.Enumeration; import java.util.Hashtable; import java.io.*; /** * Debate moderator */ public class Moderator extends Thread { private Moderator( String name ) { super (name); } /** * accessor for the Singleton moderator */ public static Moderator getModerator () { return _theModerator; } /** * add a debater * * @param name the debater's name * @to_say the debater's (scripted) text */ public void addDebater( String name, String to_say ) { Redemopublicrat debater = new Redemopublicrat (name, to_say); _debaters.put ("Mr. " + name, debater); } /** * Thread run loop */ public void run() { Enumeration debaters = _debaters.elements (); while (debaters.hasMoreElements()) { ((Redemopublicrat) debaters.nextElement ()).start(); yield(); // let the debater initialize itself } for (int i = 0; i < 10; ++i) { debaters = _debaters.keys (); while (debaters.hasMoreElements ()) { String name = (String) debaters.nextElement (); Redemopublicrat debator = (Redemopublicrat) _debaters.get (name); System.out.println (getName() + ": " + name); debator.go (); yield(); } } } static private Moderator _theModerator = new Moderator ("Lehrer"); static private Hashtable _debaters = new Hashtable(); }